当然,这是一个文本文件,但是不知道他是GB2312、GBK还是UTF-8或UTF16编码的,可能知道这个文件是否包含汉字吗?

解决方案 »

  1.   

    可以,把该文件的字符全转为ACS码
    根据ASC码来判断是否有汉字..
      

  2.   

    在不知道文件编码是哪种的情况下呢?不知道这个文件究竟是GB2312还是UTF8?
      

  3.   

    用IsDBCSLeadByte检测是否是双字节的第一个字节,
    如果是则可以知道当前字节和它后面那个字节起码不是英文
      

  4.   

    function ByteType(const S: string; Index: Integer): TMbcsByteType;
    begin
      Result := mbSingleByte;     //默认为英文字符
      if SysLocale.FarEast then   //操作系统是亚洲版本
        Result := ByteTypeTest(PChar(S), Index-1);
    end;function ByteTypeTest(P: PChar; Index: Integer): TMbcsByteType;
    var
      I: Integer;
    begin
      Result := mbSingleByte;
      if (P = nil) or (P[Index] = #$0) then Exit;
      if (Index = 0) then
      begin
        if P[0] in LeadBytes then Result := mbLeadByte;
      end
      else
      begin
        I := Index - 1;
        while (I >= 0) and (P[I] in LeadBytes) do Dec(I);//
        if ((Index - I) mod 2) = 0 then Result := mbTrailByte
        else if P[Index] in LeadBytes then Result := mbLeadByte;
      end;
    end;
      

  5.   

    其实很简单,把它转换成WideString,比较下长度是否和原来相等即可。
      

  6.   

    额貌似看漏了楼主说有可能一开始就是unicode了收回上述看法