LoadFromFile с данными Юникода
мой входной файл (f) имеет некоторый Unicode (шведский), который не читается правильно.
ни один из этих подходов работает, хотя они дают разные результаты:
LoadFromFile(f);
или
LoadFromFile(f,TEncoding.GetEncoding(GetOEMCP));
Я использую Delphi XE
Как я могу загрузить некоторые данные Unicode....также как я впоследствии SaveToFile? Спасибо
2 ответов
чтобы загрузить текстовый файл Unicode, вам нужно знать его кодировку. Если файл имеет Знак порядка байтов (BOM), то вы можете просто вызвать LoadFromFile(FileName)
и RTL будет использовать спецификацию для определения кодировки.
Если в файле нет спецификации, вам нужно явно указать кодировку, например
LoadFromFile(FileName, TEncoding.UTF8);
LoadFromFile(FileName, TEncoding.Unicode);//UTF-16 LE
LoadFromFile(FileName, TEncoding.BigEndianUnicode);//UTF-16 BE
по какой-то неизвестной мне причине нет встроенной поддержки UTF-32, но если бы у вас был такой файл, то было бы достаточно легко добавить TEncoding
экземпляр чтобы справиться с этим.
Я предполагаю, что вы имеете в виду "UTF-8", когда говорите "Unicode".
Если вы знаете, что файл UTF-8, то ли
LoadFromFile(f, TEncoding.UTF8).
сохранить:
SaveToFile(f, TEncoding.UTF8);
(том GetOEMCP
функция WinAPI предназначена для старых 255-символьных наборов символов.)