Как выводить несколько байтовых символов обычно в приложении консоли C / C ++?
-
27-09-2019 - |
Вопрос
printf("%s\n", multibytestring);
По умолчанию многобайтовые символы будут отображаться, как ???
В консоли, как я могу это исправить?
Решение
Я предполагаю, что Windows, и что вы имеете в виду многобайтовые символы и не широкие символы.
Удостоверься что _MBCS
определено. Попробуйте позвонить setlocale
а потом _setmbcp
:
setlocale(LC_ALL, "japanese");
_setmbcp(_MB_CP_LOCALE);
После этого следует, надеюсь, работать нормально.
Другие советы
Вы хотите «% ls» для широко-символьных строк. Это то, что вы после?
Вот более полный ответ:
- Вы можете использовать WPRINTF для вывода 16-битных строк по умолчанию с использованием «% s»
- Вы можете использовать «% ls» или «% hs», чтобы явно указать ширину Char / String для индивидуальных аргументов, независимо от варианта printf
- Видеть: http://msdn.microsoft.com/en-us/library/56e442dc.aspx. Для справочных документов MS
Если вы спрашиваете о персонажах UTF8, не имея права, это, вероятно, специфична платформа (зависит от кодовой страницы / обработки для консоли). Вы должны быть в состоянии выводить UTF8 как ASCII, но на дисплее будет правильно обрабатывать UTF8, и вам может потребоваться установить соответствующий кодовой страховой или другой настройки среды (не слишком уверен в этом, я думаю, что это конкретно ).
Попробуй это:
wprintf("%s\n", multibytestring);