Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить китайский язык в MessageBox / 11 сообщений из 11, страница 1 из 1
06.12.2016, 19:24
    #39361473
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
Есть функция, которая возвращает в UTF-8 китайскую фразу.

Код: plaintext
1.
2.
3.
const char*  txt;
txt = china_message();
MessageBox(0,  txt , "", 0);



На выходе вместо иероглифов вот это
...
Рейтинг: 0 / 0
06.12.2016, 19:43
    #39361480
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
1) Преобразовать UTF-8 в UTF-16.
2) Использовать результат п.1 при вызове функции MessageBoxW().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.12.2016, 19:46
    #39361482
ТиФорс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
Eolt,

никак. месагебох не поддерживает UTF-8.
...
Рейтинг: 0 / 0
06.12.2016, 20:24
    #39361500
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
Dimitry Sibiryakov1) Преобразовать UTF-8 в UTF-16.
2) Использовать результат п.1 при вызове функции MessageBoxW().


не работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
        const char*  txt;
        txt = china_message();

	std::string str = txt;
	std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
	std::wstring wstr = converter.from_bytes(str);
	LPCWSTR  u16 = wstr.c_str(); 

	MessageBoxW(0, u16, u16, 0);
...
Рейтинг: 0 / 0
06.12.2016, 20:54
    #39361508
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
Eolt,

Если мозг не работает, предлагаю потренироваться на чем попроще. Например на кошках на русском в UTF8.

Раньше всегда была двухшаговая трансляция кодировок XXX->bytes->XXY, а у тебя один шаг.
...
Рейтинг: 0 / 0
06.12.2016, 20:59
    #39361510
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
Eoltне работает:
Не умеешь готовить конвертеры - используй старое доброе MutliByteToWideChar().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.12.2016, 21:09
    #39361513
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
EoltDimitry Sibiryakov1) Преобразовать UTF-8 в UTF-16.
2) Использовать результат п.1 при вызове функции MessageBoxW().


не работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
        const char*  txt;
        txt = china_message();

	std::string str = txt;
	std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
	std::wstring wstr = converter.from_bytes(str);
	LPCWSTR  u16 = wstr.c_str(); 

	MessageBoxW(0, u16, u16, 0);



Блин ошибка оказалась в china_message! Dimitry Sibiryakov был прав, надо конвертировать UTF-8 в UTF-16! :)
...
Рейтинг: 0 / 0
07.12.2016, 08:01
    #39361580
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
EoltЕсть функция, которая возвращает в UTF-8 китайскую фразу.

Код: plaintext
1.
2.
3.
const char*  txt;
txt = china_message();
MessageBox(0,  txt , "", 0);



На выходе вместо иероглифов вот это


просто тебе нужны еще и китайские шрифты...
...
Рейтинг: 0 / 0
07.12.2016, 09:00
    #39361593
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
MasterZiv,

Ты опоздал , топикстартер UTF-8 вместо UTF-16 подавал
А шрифт, содержащий Китайский, в винде давно есть в стандартной поставке
...
Рейтинг: 0 / 0
07.12.2016, 12:14
    #39361722
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
Eolt,

Только вот у тебя в топик мессадже три совершенно других иероглифа, отличных от результата.
...
Рейтинг: 0 / 0
07.12.2016, 15:04
    #39361872
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить китайский язык в MessageBox
NekZEolt,

Только вот у тебя в топик мессадже три совершенно других иероглифа, отличных от результата.

Это я поменял уже. Первый вариант - это неприличное слово по-китайски :)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить китайский язык в MessageBox / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]