LoadFromFile with Unicode data

delphi, delphi-xe

Solution

In order to load a Unicode text file you need to know its encoding. If the file has a Byte Order Mark (BOM), then you can simply call `LoadFromFile(FileName)` and the RTL will use the BOM to determine the encoding.

If the file does not have a BOM then you need to explicitly specify the encoding, e.g.

LoadFromFile(FileName, TEncoding.UTF8);
LoadFromFile(FileName, TEncoding.Unicode);//UTF-16 LE
LoadFromFile(FileName, TEncoding.BigEndianUnicode);//UTF-16 BE

For some reason, unknown to me, there is no built in support for UTF-32, but if you had such a file then it would be easy enough to add a `TEncoding` instance to handle that.

Problem

My input file(f) has some Unicode (Swedish) that isn't being read correctly. Neither of these approaches works, although they give different results: ``` LoadFromFile(f); ``` or ``` LoadFromFile(f,TEncoding.GetEncoding(GetOEMCP)); ``` I'm using Delphi XE How can I LoadFromFile some Unicode data....also how do I subsequently SaveToFile? Thanks

Original source