【发布时间】:2012-01-05 11:13:16
【问题描述】:
是否可以使用ReadList 来读取使用ReadList[..., Word] 的UTF-8(或任何其他)编码的文本文件,还是只能使用ASCII?如果它是纯 ASCII 码,是否有可能以良好的性能“修复”已读取数据的编码(即保留 ReadList 相对于 Import 的性能优势)?
Import[..., CharacterEncoding -> "UTF8"] 可以工作,但它比ReadList 慢很多。 $CharacterEncoding 对 ReadList 没有影响
Download a sample UTF-8 encoded file here.
要在大输入上测试性能,请参阅this question 中的测试文件。
以下是大型文本文件的答案时间安排:
导入
In[2]:= Timing[
data = Import[file, "Text"];
]
Out[2]= {5.234, Null}
海克
In[4]:= Timing[
data = ReadList[file, String];
FromCharacterCode[ToCharacterCode[data], "UTF8"];
]
Out[4]= {4.328, Null}
先生。向导
In[5]:= Timing[
string = FromCharacterCode[BinaryReadList[file], "UTF-8"];
]
Out[5]= {2.281, Null}
【问题讨论】:
-
能否链接到我可以用来测试的 UTF-8 编码文件?
-
我记得
ToCharacterCode本身就可以处理列表,所以我认为不需要Map。这会提高它的性能吗?