Проблема : Win32, Кодировка, русский язык
Модератор: Модераторы
- EmeraldMan
- постоялец
- Сообщения: 149
- Зарегистрирован: 16.10.2008 08:41:51
- Откуда: Белгород
- Контактная информация:
Проверил...
Лучше использовать директиву {$codepage utf8}, а не преобразовывать в UTF-8 с BOM.
В Windows работает без разницы, однако в Ubuntu ругался как раз на символ BOM. Интересно ругался - в принципе компилировался, однако если визуально настраивать событие например у обычного Button - OnClick, то не создавал событие, а кричал на этот символ. Т.е. для кросс-компиляции не годится преобразование с BOM.
К слову, в версии Ubuntu преобразования в UTF-8 с BOM пока нет.
Лучше использовать директиву {$codepage utf8}, а не преобразовывать в UTF-8 с BOM.
В Windows работает без разницы, однако в Ubuntu ругался как раз на символ BOM. Интересно ругался - в принципе компилировался, однако если визуально настраивать событие например у обычного Button - OnClick, то не создавал событие, а кричал на этот символ. Т.е. для кросс-компиляции не годится преобразование с BOM.
К слову, в версии Ubuntu преобразования в UTF-8 с BOM пока нет.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
ВОМ для utf-8 считается Microsoft-специфичной сущностью, в отличие от BOM для utf-16. Хотя... кто ругался-то? Lazarus?
- EmeraldMan
- постоялец
- Сообщения: 149
- Зарегистрирован: 16.10.2008 08:41:51
- Откуда: Белгород
- Контактная информация:
Ага, именно он и ругался... но при этом компилировался, просто события новые не хотел добавлять (например onClick).
В современном Лазарус UTF8ToANSI не помогает - кракозябры остаются - скрин прикладываю во вложении.Ferrum писал(а):Всем доброго времени суток!
Проблема на самом деле банальна, но с подвохом...
Вобщем, в лазарус, скажем,выдаст сообщение с абракадаброй вместо русского слова. Проблема обходится, если использовать функцию перевода кодировокКод: Выделить всё
MessageBox(0,0,'Русь',0);Код: Выделить всё
MessageBox(0,0,PChar(UTF8ToAnsi('Русь')),0);
Как мне сделать MessageBox с русскими буквами?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Вот так:
В uses добавить модуль LazUTF8.
Код: Выделить всё
MessageBoxW(0, PWideChar(UTF8ToUTF16('Я победил кракозябры!')), PWideChar(UTF8ToUTF16('Заголовок')), MB_OK+MB_TASKMODAL);А почему тогда, например, не вот так?bigcrown писал(а):Вот так:
В uses добавить модуль LazUTF8.Код: Выделить всё
MessageBoxW(0, PWideChar(UTF8ToUTF16('Я победил кракозябры!')), PWideChar(UTF8ToUTF16('Заголовок')), MB_OK+MB_TASKMODAL);
Код: Выделить всё
program project1;
uses JwaWinUser;
begin
MessageBoxW(0, PWideChar(UTF8Decode('Я победил кракозябры!')), PWideChar(UTF8Decode('Заголовок')), MB_OK+MB_TASKMODAL);
end.Хм, а почему тогда, например, не вот так?delphius писал(а):А почему тогда, например, не вот так?
КОД: ВЫДЕЛИТЬ ВСЁ
program project1;
uses JwaWinUser;
begin
MessageBoxW(0, PWideChar(UTF8Decode('Я победил кракозябры!')), PWideChar(UTF8Decode('Заголовок')), MB_OK+MB_TASKMODAL);
end.
Под чистым fpc компилится, не тянет за собой LazUtils...
Код: Выделить всё
program project1;
uses Windows;
begin
MessageBoxW(0, Pointer(UTF8Decode('Я победил кракозябры!')), Pointer(UTF8Decode('Заголовок')), MB_OK+MB_TASKMODAL);
end.
Тем более))) я просто исходил из предыдущих условий использования Jediiskander писал(а):Хм, а почему тогда, например, не вот так?
А можно поинтересоваться насчёт предыдущих условий использования Jedi?delphius писал(а):я просто исходил из предыдущих условий использования Jedi
Без понятия) все было в контексте решений других участников беседы)iskander писал(а):А можно поинтересоваться насчёт предыдущих условий использования Jedi?
Вот так обычно всегда и есть.delphius писал(а):Без понятия)
Можно заливать на продiskander писал(а):Вот так обычно всегда и есть.
