我试图将txt文件打开到StringList,但是如果我打开UTF-8格式它无法加载,这会让人困惑,因为我有Unicode XE2,这里是不是遗漏了一些愚蠢的东西?
简单样本
Sl := tStringList.Create;
SL.LoadFromFile(sFilePath);
For i =0 to SL.Count -1 do
foo但是,当txt文件为UTF-8时,字符串不会加载,但在ANSI格式下,字符串工作良好。
发布于 2017-06-26 16:34:34
如果您的UTF-8文件确实有BOM,那么加载包含无效UTF-8字节序列的UTF-8文件将产生一个空结果,没有任何异常或故障指示。这是Delphi文件处理的“特性”。因此,如果您看到这个结果,并且您的文件有一个有效的BOM,检查内容。
发布于 2017-06-22 11:00:59
TStringList.LoadFromFile将尝试从文件的字节顺序标记(BOM)推断编码。如果不存在BOM,则假定ANSI编码。
在您的例子中,似乎没有BOM,所以您必须告诉LoadFromFile使用哪种编码。为此,请将编码指定为传递给LoadFromFile的第二个参数
SL.LoadFromFile(sFilePath, TEncoding.UTF8);https://stackoverflow.com/questions/44696887
复制相似问题