當我將對象從TStringList類文件內容保存到文件時,默認情況下,該文件是使用UTF-8正確保存的,但帶有BOM的UTF-8保存。如何從TStringList類保存一個對象到UTF8沒有BOM的文件(Delphi XE 2)?
我的代碼是:
myFile := TStringList.Create;
try
myFile.Text := myData;
myFile.saveToFile('myfile.dat', TEncoding.UTF8)
finally
FreeAndNil(myFile);
end;
在示例中,文件 「MYFILE.DAT」 顯示爲 「UTF-8 BOM」 編碼。
如何保存沒有BOM的文件?
謝謝@ sir-rufo這真的是一個很好的出口。但是對於新文件來說是真實的。在保存之前讀取文件時(LoadFromFile ...),不成立。也許與德爾福XE2的問題。我會嘗試更新Delphi版本。這太奇怪了。 –
我沒有明白這一點,因爲我沒有看到任何代碼行(XE8),其中屬性'WriteBOM'被設置爲除了'構造函數'和'AssignTo',如預期的那樣。默認值爲「true」,除非您這樣做,否則不會更改。 –
僅供參考,在Delphi XE中增加了'TStrings.WriteBOM',但'TStrings'在D2009中首次獲得了'TEncoding'支持。但SirRufo是正確的,即使在加載之後,'WriteBOM'將始終爲True,除非您明確將其設置爲False。 'TStrings.LoadFrom ...()'方法不會改變'WriteBOM'的值,但是它們會改變'TStrings.Encoding'屬性的值。 –