2019-01-15

【Delphi7】讀取 UTF-8 文字檔

參考資料 ----

BOM

 

 

Delphi 預設讀取 ASCII 文字檔,若要讀取 UTF-8 格式的文字檔,則需要轉換。

Form1 上放一個 buttonmemo,然後在 button onclick event 寫入以下程式碼:


 
procedure TForm1.Button1Click(Sender: TObject);
var
    myfile: TextFile;
    ss: string;
begin
    memo1.clear;

    AssignFile(myfile, 'd:\temp\list.csv');
    Reset(myfile);

    while not EOF(myfile) do
    begin
        ReadLn(myfile,ss);
        
        // 由於某些 UTF-8 格式的檔首會含有 BOM
        // 但 BOM 對 UTF-8 文字檔並非必需
        // 因此將 BOM 字元消除
        if (pos(#$EF#$BB#$BF,ss)>0) then
        begin
            ss := StringReplace(ss, #$EF#$BB#$BF, '', [rfReplaceAll]);
        end;
        
        ss := UTF8ToAnsi(ss);
        memo1.Lines.Add(ss);
    end;

    CloseFile(myfile);
end;
 

相關筆記 ----

【Delphi7】儲存寫入 UTF-8 文字檔