我的输入文件(f)有一些Unicode(瑞典语),无法正确读取。
尽管这些方法得出不同的结果,但它们都不起作用:
LoadFromFile(f);
或者
LoadFromFile(f,TEncoding.GetEncoding(GetOEMCP));
我正在使用Delphi XE
我怎样才能LoadFromFile一些Unicode数据...。又如何随后保存到文件?谢谢
最佳答案
为了加载Unicode文本文件,您需要知道其编码。如果文件具有字节顺序标记(BOM),则只需调用LoadFromFile(FileName)
,RTL将使用BOM来确定编码。
如果文件没有BOM,则需要明确指定编码,例如
LoadFromFile(FileName, TEncoding.UTF8);
LoadFromFile(FileName, TEncoding.Unicode);//UTF-16 LE
LoadFromFile(FileName, TEncoding.BigEndianUnicode);//UTF-16 BE
由于某种原因(我不知道),没有对UTF-32的内置支持,但是如果您有这样的文件,那么添加
TEncoding
实例来处理它就足够容易了。