我的输入文件(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实例来处理它就足够容易了。

10-05 22:16