繁体   English   中英

TStringList.LoadFromFile Unicode

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM