全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:110
推到 Plurk!
推到 Facebook!

一個解決 TXT檔 編碼 讀取判斷 ansi 或 utf-8 的小方法

 
it1506
初階會員


發表:30
回覆:83
積分:47
註冊:2011-02-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2017-10-12 09:57:49 IP:59.120.xxx.xxx 未訂閱
當要讀取 txt 檔時 總要判斷編碼 是 ansi 或是 utf-8 ,不然中文就會亂碼.

要是遇到沒有bom頭的TXT檔, 就更麻煩.

後來想到可以用一些小方法...使用 memo 元件

當 mmo2.Lines.LoadFromStream(sr,TEncoding.UTF8);

若該檔案編碼是ANSI 則 memo的line會是一片空白, 也就沒有行數.

所以就可以藉由判斷memo.lines.count 來決定要用哪種編碼來讀取了!


[code delphi]
sr:=TFileStream.Create('c:\test.txt',fmShareDenyWrite);

mmo2.Lines.LoadFromStream(sr,TEncoding.UTF8); //預設都utf8
if mmo2.Lines.Count=0 then begin
sr.Free;
sr:=TFileStream.Create('c:\test.txt',fmShareDenyWrite);
mmo2.Clear;
mmo2.Lines.LoadFromStream(sr,TEncoding.ANSI);
end;
[/code]
編輯記錄
it1506 重新編輯於 2017-10-12 09:59:31, 註解 無‧
系統時間:2017-10-22 3:12:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!