频道栏目
首页 > 程序开发 > 软件开发 > Delphi > 正文
判断文件的编码格式(Unicode;Utf-8;Ansi;Unicode Big Endian)
2012-08-21 14:27:39      个评论      
收藏   我要投稿
程序原理通过通过判断文件头几个字节来判断文件的编码格式

ANSI :         无格式定义;
Unicode :      前两个字节为 FFFE ;
Unicode big endian : 前两字节为 FEFF ; 
UTF-8 :        前两字节为 EFBB ;

代码部分来自网络+自己修改
定义:

type
  TTextFormat = (tfAnsi, tfUnicode, tfUnicodeBigEndian, tfUtf8);
end;
const
  TextFormatFlag: array [tfAnsi .. tfUtf8] of word = ($0000, $FFFE, $FEFF,
    $EFBB);

函数
function GetFileType(const FileName: string): TTextFormat;
var
  w: word;
  b: Byte;
begin
  with TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone) do
    try
      Read(w, 2);
      asm    // 因为是以Word数据类型读取,故高低字节互换
          PUSH EAX
          MOVZX EAX,  w
          XCHG AL,AH
          MOV w, AX
          POP EAX
        end;      
       if w = TextFormatFlag[tfUnicode] then
        Result := TTextFormat.tfUnicode
      else if w = TextFormatFlag[tfUnicodeBigEndian] then
        Result := TTextFormat.tfUnicodeBigEndian
      else if w = TextFormatFlag[tfUtf8] then
        Result := TTextFormat.tfUtf8
      else
        Result := TTextFormat.tfAnsi;
    finally
      Free;
    end;
end; 
点击复制链接 与好友分享!回本站首页
相关TAG标签 编码 格式 文件
上一篇:获取闲置时间
下一篇:一个成功获取百度注册页面验证码图片的源代码
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站