Проблема : Win32, Кодировка, русский язык

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Проблема : Win32, Кодировка, русский язык

Сообщение EmeraldMan » 29.09.2009 20:11:46

Проверил...
Лучше использовать директиву {$codepage utf8}, а не преобразовывать в UTF-8 с BOM.
В Windows работает без разницы, однако в Ubuntu ругался как раз на символ BOM. Интересно ругался - в принципе компилировался, однако если визуально настраивать событие например у обычного Button - OnClick, то не создавал событие, а кричал на этот символ. Т.е. для кросс-компиляции не годится преобразование с BOM.
К слову, в версии Ubuntu преобразования в UTF-8 с BOM пока нет.
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

Re: Проблема : Win32, Кодировка, русский язык

Сообщение Sergei I. Gorelkin » 29.09.2009 22:55:53

ВОМ для utf-8 считается Microsoft-специфичной сущностью, в отличие от BOM для utf-16. Хотя... кто ругался-то? Lazarus?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Проблема : Win32, Кодировка, русский язык

Сообщение EmeraldMan » 01.10.2009 20:42:08

Ага, именно он и ругался... но при этом компилировался, просто события новые не хотел добавлять (например onClick).
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

Re: Проблема : Win32, Кодировка, русский язык

Сообщение bigcrown » 20.09.2022 14:22:58

Ferrum писал(а):Всем доброго времени суток!
Проблема на самом деле банальна, но с подвохом...
Вобщем, в лазарус, скажем,
Код: Выделить всё
MessageBox(0,0,'Русь',0);
выдаст сообщение с абракадаброй вместо русского слова. Проблема обходится, если использовать функцию перевода кодировок
Код: Выделить всё
MessageBox(0,0,PChar(UTF8ToAnsi('Русь')),0);


В современном Лазарус UTF8ToANSI не помогает - кракозябры остаются - скрин прикладываю во вложении.

Как мне сделать MessageBox с русскими буквами?

непомогает.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
bigcrown
незнакомец
 
Сообщения: 2
Зарегистрирован: 20.09.2022 14:19:54

Re: Проблема : Win32, Кодировка, русский язык

Сообщение bigcrown » 28.02.2023 15:12:58

Вот так:

Код: Выделить всё
MessageBoxW(0, PWideChar(UTF8ToUTF16('Я победил кракозябры!')), PWideChar(UTF8ToUTF16('Заголовок')), MB_OK+MB_TASKMODAL);


В uses добавить модуль LazUTF8.
bigcrown
незнакомец
 
Сообщения: 2
Зарегистрирован: 20.09.2022 14:19:54

Re: Проблема : Win32, Кодировка, русский язык

Сообщение alexs » 28.02.2023 16:55:42

Использовать Application.MessageBox - это просто правильная обёртка над системным MessageBox. Не нужно будет извращаться с перекодировками
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Проблема : Win32, Кодировка, русский язык

Сообщение delphius » 28.02.2023 23:17:17

bigcrown писал(а):Вот так:

Код: Выделить всё
MessageBoxW(0, PWideChar(UTF8ToUTF16('Я победил кракозябры!')), PWideChar(UTF8ToUTF16('Заголовок')), MB_OK+MB_TASKMODAL);


В uses добавить модуль LazUTF8.


А почему тогда, например, не вот так? :roll:
Код: Выделить всё
program project1;
   uses JwaWinUser;
begin
     MessageBoxW(0, PWideChar(UTF8Decode('Я победил кракозябры!')), PWideChar(UTF8Decode('Заголовок')), MB_OK+MB_TASKMODAL);
end.


Под чистым fpc компилится, не тянет за собой LazUtils...
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: Проблема : Win32, Кодировка, русский язык

Сообщение iskander » 03.03.2023 12:59:50

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.

Под чистым fpc компилится, не тянет за собой JwaWinUser...
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: Проблема : Win32, Кодировка, русский язык

Сообщение delphius » 03.03.2023 21:10:24

iskander писал(а):Хм, а почему тогда, например, не вот так?

Тем более))) я просто исходил из предыдущих условий использования Jedi
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: Проблема : Win32, Кодировка, русский язык

Сообщение iskander » 03.03.2023 21:19:09

delphius писал(а):я просто исходил из предыдущих условий использования Jedi

А можно поинтересоваться насчёт предыдущих условий использования Jedi?
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: Проблема : Win32, Кодировка, русский язык

Сообщение delphius » 03.03.2023 21:51:38

iskander писал(а):А можно поинтересоваться насчёт предыдущих условий использования Jedi?

Без понятия) все было в контексте решений других участников беседы)
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: Проблема : Win32, Кодировка, русский язык

Сообщение iskander » 03.03.2023 22:16:19

delphius писал(а):Без понятия)

Вот так обычно всегда и есть.
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: Проблема : Win32, Кодировка, русский язык

Сообщение delphius » 03.03.2023 23:18:13

iskander писал(а):Вот так обычно всегда и есть.

Можно заливать на прод :mrgreen: :mrgreen: :mrgreen:
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

Рейтинг@Mail.ru