如何在c / c ++控制台应用程序中正常输出多字节字符?

时间:2010-10-05 05:08:09

标签: c++ console-application multibyte

printf("%s\n", multibytestring);

默认情况下,多字节字符会在控制台中显示为???,我该如何解决?

3 个答案:

答案 0 :(得分:0)

试试这个:

wprintf("%s\n", multibytestring);

答案 1 :(得分:0)

对于宽字符字符串,您需要“%ls”。这就是你要追求的吗?

这是一个更完整的答案:

  • 默认情况下,您可以使用“%s”
  • 使用wprintf输出16位字符串
  • 您可以使用“%ls”或“%hs”显式指定各个参数的字符/字符串宽度,而不考虑printf variant
  • 请参阅:http://msdn.microsoft.com/en-us/library/56e442dc.aspx了解MS的参考文档

如果您要求UTF8字符显示不正确,则可能是特定于平台的(取决于控制台的代码页/处理)。你应该能够输出UTF8作为ASCII,但是显示器必须能够正确处理UTF8,你可能需要设置相应的代码页或其他环境设置(对此不太确定,我认为它是app / platform特定的)。

答案 2 :(得分:0)

我猜Windows,你的意思是多字节字符而不是宽字符。

确保_MBCS已定义。尝试拨打setlocale,然后拨打_setmbcp

setlocale(LC_ALL, "japanese");
_setmbcp(_MB_CP_LOCALE);

之后它应该会正常工作。