如何在C / C ++中输出unicode字符

我在Windows控制台中输出unicode字符时遇到问题。 我正在使用mingw32-g ++编译器使用Windows XP和代码块12.11。

用C或C ++在Windows控制台中输出unicode字符的正确方法是什么?

这是我的C ++代码:

#include <iostream> #include <string> using namespace std; int main() { cout << "šđč枊ĐČĆŽ" << endl; // doesn't work string s = "šđč枊ĐČĆŽ"; cout << s << endl; // doesn't work return 0; } 

提前致谢。 🙂

大多数这些字符需要超过一个字节来编码,但std::cout当前注入的语言环境将仅输出ASCII字符。 出于这个原因,您可能会在输出流中看到很多奇怪的符号或问号。 你应该用一个使用UTF-8的语言环境std::wcout ,因为这些字符不被ASCII支持:

 // <locale> is required for this code. std::locale::global(std::locale("en_US.utf8")); std::wcout.imbue(std::locale()); std::wstring s = L"šđč枊ĐČĆŽ"; std::wcout << s; 

对于Windows系统,您将需要以下代码:

 #include <iostream> #include <string> #include <fcntl.h> #include <io.h> int main() { _setmode(_fileno(stdout), _O_WTEXT); std::wstring s = L"šđč枊ĐČĆŽ"; std::wcout << s; return 0; }