我在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; }