我正在阅读 Bjarne Stroustrup 的“The C++ programming language”,在第 7.3.2.2 节中通过打印说明:
u8"the officials vowels in Danish are:a, e, i o, u, \u00E6, \u00F8, \u00E5 and y."
你会得到:
the officials vowels in Danish are:a, e, i o, u, æ, ø, å and y.
但是,如果我在自己的机器上尝试这个,我会得到这个:
the officials vowels in Danish are:a, e, i o, u, ├Ž, ├Ş, ├ą and y.
我做错了什么?
最佳答案
由于某些原因,Windows 在控制台中默认不使用 UTF-8。
按照建议运行 chcp 65001
应该可以工作(65001 是 UTF-8 的 code page)。
或者我以编程方式使用:
#ifdef _WIN32
if( !SetConsoleOutputCP( CP_UTF8 ) )
throw "Setting Windows console to UTF-8 codepage failed!";
#endif
PS:IIRC 我在使用 cout
时也遇到了问题(可能是由于 locale
)。但是 printf()
适合我。
关于C++ UTF-8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183804/