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

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

4

3 回答 3

0

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

确保_MBCS 已定义。尝试调用setlocale然后_setmbcp

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

在那之后,它应该可以正常工作。

于 2010-10-05T06:21:25.567 回答
0

尝试这个:

wprintf("%s\n", multibytestring);
于 2010-10-05T05:10:11.277 回答
0

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

这是一个更完整的答案:

  • 您可以使用 wprintf 默认使用 "%s" 输出 16 位字符串
  • 您可以使用 "%ls" 或 "%hs" 显式指定单个参数的字符/字符串宽度,无论 printf 变体如何
  • 有关MS 的参考文档,请参阅:http: //msdn.microsoft.com/en-us/library/56e442dc.aspx

如果您询问 UTF8 字符显示不正确,它可能是特定于平台的(取决于控制台的代码页/处理)。您应该能够将 UTF8 输出为 ASCII,但显示器必须能够正确处理 UTF8,并且您可能需要设置适当的代码页或其他环境设置(对此不太确定,我认为它是特定于应用程序/平台的)。

于 2010-10-05T05:10:25.847 回答