程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 判斷文件的編碼格式(Unicode;Utf-8;Ansi;Unicode Big Endian)

判斷文件的編碼格式(Unicode;Utf-8;Ansi;Unicode Big Endian)

編輯:Delphi

程序原理通過通過判斷文件頭幾個字節來判斷文件的編碼格式

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; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved