首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TStringList.LoadFromFile Unicode

TStringList.LoadFromFile Unicode
EN

Stack Overflow用户
提问于 2017-06-22 10:33:04
回答 2查看 8.9K关注 0票数 6

我试图将txt文件打开到StringList,但是如果我打开UTF-8格式它无法加载,这会让人困惑,因为我有Unicode XE2,这里是不是遗漏了一些愚蠢的东西?

简单样本

代码语言:javascript
复制
Sl := tStringList.Create;

SL.LoadFromFile(sFilePath);

For i =0 to SL.Count -1 do
  foo

但是,当txt文件为UTF-8时,字符串不会加载,但在ANSI格式下,字符串工作良好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-26 16:34:34

如果您的UTF-8文件确实有BOM,那么加载包含无效UTF-8字节序列的UTF-8文件将产生一个空结果,没有任何异常或故障指示。这是Delphi文件处理的“特性”。因此,如果您看到这个结果,并且您的文件有一个有效的BOM,检查内容。

票数 1
EN

Stack Overflow用户

发布于 2017-06-22 11:00:59

TStringList.LoadFromFile将尝试从文件的字节顺序标记(BOM)推断编码。如果不存在BOM,则假定ANSI编码。

在您的例子中,似乎没有BOM,所以您必须告诉LoadFromFile使用哪种编码。为此,请将编码指定为传递给LoadFromFile的第二个参数

代码语言:javascript
复制
SL.LoadFromFile(sFilePath, TEncoding.UTF8);
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44696887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档