Кириллица в мультибайте

Я довольно новичок в работе с C++. У меня есть проект MFC, который нужно перевести на русский язык.

Если я изменю настройки MFC на Unicode, все будет отображаться правильно. Мой вопрос:

Можно ли печатать кириллицу с помощью Multibyte? Если да, то как?

Спасибо, парни!


person Frein    schedule 01.02.2018    source источник
comment
Ответ на ваш вопрос: можно.   -  person Dialecticus    schedule 01.02.2018
comment
Спасибо Диалектика. У вас есть пример или страница для документации? Это мой первый раз с нелатинскими символами.   -  person Frein    schedule 01.02.2018
comment
Нет, но вы должны задавать правильный вопрос, когда задаете его. Вместо того, возможно ли, вы должны спросить, как это сделать. Мы не можем быть уверены, что вы подразумеваете второе, спрашивая первое. Кроме того, почему бы просто не использовать Unicode? Вы говорите, что это работает, так что просто используйте его.   -  person Dialecticus    schedule 01.02.2018
comment
Извините, я буду более конкретным и буду более осторожным, когда буду спрашивать что-то в будущем. Товарищи по команде сказали, что мне лучше не использовать Unicode, потому что это вызовет много ошибок, но я думаю, что лучше использовать Unicode.   -  person Frein    schedule 01.02.2018
comment
Э-э, если товарищи по команде говорят вам не использовать Unicode, потому что они не знают, как использовать Unicode, вам лучше поискать достойный проект. Тот явно не такой.   -  person IInspectable    schedule 01.02.2018


Ответы (1)


Я рекомендую вам создать приложение MFC с использованием Unicode (точнее: UTF-16 в настройках MFC/Visual Studio), как вы написали "Если я перейду от MFC к Unicode, все будет отображаться правильно. .".

В то же время вы все еще можете использовать другую кодировку, например, например. UTF-8 для кириллического текста и сохраните его в объектах CStringA или std::string. Затем вы можете конвертировать между UTF-8 и UTF-16 на «границах MFC», например. при отображении текста в диалоговых окнах или других окнах приложений.

Вы можете использовать некоторые помощники преобразования ATL/MFC или написать свои собственные код преобразования, вызывающий API-интерфейсы Windows, такие как MultiByteToWideChar и WideCharToMultiByte, указывая правильную «кодовую страницу» для преобразования (например, CP_UTF8 для текста в кодировке UTF-8).

Вам также может быть полезна эта статья MSDN о преобразованиях кодировки Unicode.

С другой стороны, если вы хотите использовать определенную кодовую страницу (например, 1251 Windows кириллица) вместо UTF-8, то вы все равно можете использовать MultiByteToWideChar для преобразования текста из вашей кодовой страницы в Unicode UTF-16, указав правильный идентификатор кодовой страницы.

person Mr.C64    schedule 01.02.2018