Конференция "Основная" » TMemIniFile проблема с загрузкой UTF8
 
  • vladgul (08.02.19 23:38) [0]
    Доброго времени суток!

    Возникла задача работать с 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
 
Конференция "Основная" » TMemIniFile проблема с загрузкой UTF8
Есть новые Нет новых   [134464   +62][b:0][p:0]