Доброго времени суток!
Возникла задача работать с Ini файлами в Unicode
Использую TMemIniFile
В результате, если файл в кодировке UTF8 (кодовая страница 65001), то не считывает ничего.
Если копаться в исходниках, то функция из модуля SysUtils
[Code]function TMBCSEncoding.GetCharCount(Bytes: PByte; ByteCount: Integer): Integer;
begin
Result := UnicodeFromLocaleChars(FCodePage, FMBToWCharFlags,
PAnsiChar(Bytes), ByteCount, nil, 0);
end;
[/Code]
Возвращает 0. Ну и дальше понятно, что ничего никуда не загружается.
Использую так:
TranslatedMemIni := TMemIniFile.Create(TranslationFile, TEncoding.UTF8);
Непосредственно в сам Ini файл с помощью Notepad++ добавил несколько специфичных символов с умляутами (всякие галочки над буквами), чтобы сразу посмотреть результат.
Но, как уже сказал, вообще ничего не считалось. Пробовал в разных вариантах. Читает только в TEncoding.ASCII, TEncoding.Default, TEncoding.UTF7. В остальных нет.
Если делаю, так
TranslatedMemIni := TMemIniFile.Create(TranslationFile, TEncoding.Default);
То все считывается, но специфичные символы превращаются в аброкадабру.
Вопрос: как правильно прочитать (а потом и записать) в кодировке UTF8.
P.S.
Delphi XE
Win 7 x64