Можно ли использовать ReadList
для чтения кодированных в UTF-8 (или любых других) текстовых файлов, используя ReadList[..., Word]
, или это только ASCII?Если это только ASCII, можно ли "исправить" кодирование уже прочитанных данных с хорошей производительностью (то есть, сохранить преимущества производительности ReadList
над Import
)?
Import[..., CharacterEncoding -> "UTF8"]
работает, но это немного медленнее, чем ReadList
.$CharacterEncoding
не влияет на ReadList
Загрузите образец файла в кодировке UTF-8 здесь.
Для тестирования производительности на большом входе см.файл теста в этот вопрос .
Ниже приведены временные характеристики ответов в текстовом файле большого размера:
Импорт
In[2]:= Timing[
data = Import[file, "Text"];
]
Out[2]= {5.234, Null}
Heike
In[4]:= Timing[
data = ReadList[file, String];
FromCharacterCode[ToCharacterCode[data], "UTF8"];
]
Out[4]= {4.328, Null}
Mr.Волшебник
In[5]:= Timing[
string = FromCharacterCode[BinaryReadList[file], "UTF-8"];
]
Out[5]= {2.281, Null}