delphiutf-8tstringlist

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?


Solution

  • 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.