簡體   English   中英

TStringList.LoadFromFile Unicode

[英]TStringList.LoadFromFile Unicode

我試圖將一個txt文件打開到StringList但是如果我打開一個UTF-8格式它無法加載,這是令人困惑的,因為我有Unicode XE2,我在這里錯過了一些愚蠢的東西嗎?

簡單樣本

Sl := tStringList.Create;

SL.LoadFromFile(sFilePath);

For i =0 to SL.Count -1 do
  foo

但是當txt文件是UTF-8時,String不會加載,但在ANSI格式時它可以正常工作。

TStringList.LoadFromFile將嘗試從文件的字節順序標記(BOM)推斷編碼。 如果沒有BOM,則假定為ANSI編碼。

在您的情況下,似乎很清楚沒有BOM,因此您必須告訴LoadFromFile使用哪種編碼。 通過將編碼指定為傳遞給LoadFromFile的第二個參數來執行此操作:

SL.LoadFromFile(sFilePath, TEncoding.UTF8);

如果您的UTF-8文件確實有BOM,則加載包含無效UTF-8字節序列的UTF-8文件將產生空結果,沒有異常或指示失敗。 這是Delphi文件處理的“功能”。 因此,如果您看到此結果且文件包含有效的BOM,請檢查內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM