[英]TStringList.LoadFromFile Unicode
我试图将一个txt文件打开到StringList但是如果我打开一个UTF-8格式它无法加载,这是令人困惑的,因为我有Unicode XE2,我在这里错过了一些愚蠢的东西吗?
简单样本
Sl := tStringList.Create;
SL.LoadFromFile(sFilePath);
For i =0 to SL.Count -1 do
foo
但是当txt文件是UTF-8时,String不会加载,但在ANSI格式时它可以正常工作。
TStringList.LoadFromFile
将尝试从文件的字节顺序标记(BOM)推断编码。 如果没有BOM,则假定为ANSI编码。
在您的情况下,似乎很清楚没有BOM,因此您必须告诉LoadFromFile
使用哪种编码。 通过将编码指定为传递给LoadFromFile
的第二个参数来执行此操作:
SL.LoadFromFile(sFilePath, TEncoding.UTF8);
如果您的UTF-8文件确实有BOM,则加载包含无效UTF-8字节序列的UTF-8文件将产生空结果,没有异常或指示失败。 这是Delphi文件处理的“功能”。 因此,如果您看到此结果且文件包含有效的BOM,请检查内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.