![]() |
![]() ![]() ![]() | |
|
Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|| Форумы Здесь вы можете задать свой вопрос и наверняка получите ответ |
ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK - Компактные программы на Delphi
| ||
![]() | ||
|
Чтобы не потерять эту дискуссию, сделайте закладку
« предыдущая ветвь | форум | следующая ветвь »
Проблема с кодировкой
Viktor (17.02.14 22:40)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
=
поиск не-частного не-конкретного случая. ;)
Разрешается использование тегов форматирования текста:
версия для печати
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)
|
![]() ![]() ![]() |