如何在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”显式指定各个参数的字符/字符串宽度,无论 printf 变体如何
- 看: http://msdn.microsoft.com/en-us/library/56e442dc.aspx MS 的参考文档
如果您询问 UTF8 字符显示不正确,它可能是特定于平台的(取决于控制台的代码页/处理)。您应该能够将 UTF8 输出为 ASCII,但是显示器必须能够正确处理 UTF8,并且您可能需要设置适当的代码页或其他环境设置(对此不太确定,我认为这是特定于应用程序/平台的)。
尝试这种情况:
wprintf("%s\n", multibytestring);
不隶属于 StackOverflow