Как выводить несколько байтовых символов обычно в приложении консоли C / C ++?

StackOverflow https://stackoverflow.com/questions/3860985

Вопрос

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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top