Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I save a object from TStringList class to file (Delphi XE 2) with UTF8 without BOM?

When I save the object from TStringList class file content to a file, the file is saved with UTF-8 correctly but UTF-8 with BOM by default.

My code is:

myFile := TStringList.Create;
try
  myFile.Text := myData;
  myFile.saveToFile('myfile.dat', TEncoding.UTF8)
finally
  FreeAndNil(myFile);
end;

In the example the file "myfile.dat" appear as "UTF-8 BOM" encoding.

How can I save the file without BOM?

like image 957
Fabiano Silva Avatar asked Aug 28 '15 15:08

Fabiano Silva


1 Answers

You simply have to set the property TStrings.WriteBOM to false.

The documentation tells us about this:

Will cause SaveToStream or SaveToFile to write a BOM.

Set WriteBOM to True to cause SaveToStream to write a BOM (byte-order mark) to the stream and to cause SaveToFile to write a BOM to the file.

like image 150
Sir Rufo Avatar answered Sep 27 '22 18:09

Sir Rufo