I have tried to change the encoding in vs code, but the Russian characters keep showing as "???" in the terminal.
y1aodyip1#
尝试将setlocale(LC_ALL, "Russian")添加到代码的开始。
setlocale(LC_ALL, "Russian")
bbuxkriu2#
auto utf16_to_utf8 = [](const std::wstring &value) -> std::string { int len = WideCharToMultiByte(CP_UTF8, 0, value.c_str(), -1, NULL, 0, 0, 0); if (len) { std::string utf8 = std::string(len, '\0'); WideCharToMultiByte(CP_UTF8, 0, value.c_str(), -1, &utf8[0], len, 0, 0); return utf8; } return std::string(); }; auto utf8_to_utf16 = [](const std::string &value) -> std::wstring { int len = MultiByteToWideChar(CP_UTF8, 0, value.c_str(), -1, NULL, 0, 0, 0); if (len) { std::wstring utf16 = std::wstring(len, '\0'); MultiByteToWideChar(CP_UTF8, 0, value.c_str(), -1, &utf16[0], len, 0, 0); return utf16; } return std::string(); };
那么就这样做吧:std::wcout<<utf8_to_utf16(u8"Привет\n"); Windows终端在显示UTF-8方面一直是出了名的糟糕,直到最近在Windows 10或11中。所以你最好输出UTF-16。
std::wcout<<utf8_to_utf16(u8"Привет\n");
f45qwnt83#
解决办法是在系统区域设置中勾选“使用Unicode UTF-8支持全球语言”。谢谢大家的贡献。
3条答案
按热度按时间y1aodyip1#
尝试将
setlocale(LC_ALL, "Russian")
添加到代码的开始。bbuxkriu2#
那么就这样做吧:
std::wcout<<utf8_to_utf16(u8"Привет\n");
Windows终端在显示UTF-8方面一直是出了名的糟糕,直到最近在Windows 10或11中。所以你最好输出UTF-16。f45qwnt83#
解决办法是在系统区域设置中勾选“使用Unicode UTF-8支持全球语言”。谢谢大家的贡献。