开发者

How to output multiple byte characters normally in c/c++ console application?

开发者 https://www.devze.com 2023-01-18 14:19 出处:网络
printf(\"%s\\n\", multibyt开发者_如何学编程estring); By default the multi-byte characters will show up like ??? in console, how can I fix it?I\'m guessing Windows, and that you mean multi-byte chara
printf("%s\n", multibyt开发者_如何学编程estring);

By default the multi-byte characters will show up like ??? in console, how can I fix it?


I'm guessing Windows, and that you mean multi-byte characters and not wide characters.

Make sure that _MBCS is defined. Try calling setlocale and then _setmbcp:

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

After that it should hopefully work fine.


You want "%ls" for wide-character strings. Is that what you're after?

Here's a more complete answer:

  • You can use wprintf to output 16-bit strings by default using "%s"
  • You can use "%ls" or "%hs" to explicitly specify the char/string width for individual arguments, regardless of printf variant
  • See: http://msdn.microsoft.com/en-us/library/56e442dc.aspx for MS's reference docs

If you're asking about UTF8 characters not appearing right, it's probably platform-specific (dependent on the codepage/handling for the console). You should be able to output UTF8 as ASCII, but the display will have to be able to handle UTF8 correctly, and you may need to set the appropriate codepage or other environment setting (not too sure about this, I think it's app/platform specific).


Try this:

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

精彩评论

暂无评论...
验证码 换一张
取 消