我的输入文件(f)有一些未正确读取的Unicode(瑞典语).
虽然它们给出了不同的结果,但这两种方法都不起作用:
LoadFromFile(f);
Run Code Online (Sandbox Code Playgroud)
要么
LoadFromFile(f,TEncoding.GetEncoding(GetOEMCP));
Run Code Online (Sandbox Code Playgroud)
我正在使用Delphi XE
我如何LoadFromFile一些Unicode数据....还有我如何随后SaveToFile?谢谢
Dav*_*nan 12
要加载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
Run Code Online (Sandbox Code Playgroud)
由于某些原因,我不知道,没有内置的UTF-32支持,但如果你有这样的文件,那么添加一个TEncoding
实例来处理它就很容易了.
当你说'Unicode'时,我认为你的意思是'UTF-8'.
如果您知道该文件是UTF-8,那么就做
LoadFromFile(f, TEncoding.UTF8).
Run Code Online (Sandbox Code Playgroud)
要保存:
SaveToFile(f, TEncoding.UTF8);
Run Code Online (Sandbox Code Playgroud)
(GetOEMCP
WinAPI函数用于旧的255个字符的字符集.)
归档时间: |
|
查看次数: |
7304 次 |
最近记录: |