Конференция "FreePascal" » Проблема с кодировкой
 
  • Viktor (17.02.14 22:40) [0]
    procedure TZakazFT.FormCreate(Sender: TObject);
    var S: String;
    begin
    S:='абв';
    ShowMessage('"'+S[1]+'"'); //показывает "?" а надо "а"
    end;

    lazarus 1.0.12 win7 x64
  • Viktor (17.02.14 22:44) [1]
    Какую функцию использовать?
  • KSergey © (16.03.14 16:56) [2]
    В Lazarus все строковые константы - в UTF-8 (не UNICODE!)
    String - скорее всего байтовый (но с похаченными функциями определения нужного размера)
    А значит и [] получает доступ побайтово, а не посимвольно.
    как посимвольно - надо гуглем поискать.
  • NoUser © (17.03.14 21:58) [3]
    var S:String; // UTF8String;
    begin
    S:='абв';
    ShowMessage ('\"'+UTF16ToUTF8( UTF8ToUTF16(S) [1] )+'\"');
    end;

  • Дмитрий К © (18.03.14 12:09) [4]
    S := UTF8Decode('абв');

  • KSergey © (21.03.14 11:48) [5]
    > NoUser ©   (17.03.14 21:58) [3]

    На сколько я понимаю - UTF16 тоже плавающее кол-во байт на символ имеет, т.е. это неудачный вариант, подходящий только в частном конкретном случае.
  • NoUser © (21.03.14 18:00) [6]
    http://www.freepascal.ru/forum/viewtopic.php?f=5&t=9035
    +
    http://wiki.freepascal.org/LCL_Unicode_Support
    =
    поиск не-частного не-конкретного случая. ;)
 
Конференция "FreePascal" » Проблема с кодировкой
Есть новые Нет новых   [118638   +31][b:0][p:0.001]