c++ 有没有一种方法可以配置VS Code或Code::Blocks,以便终端可以输出俄语字符?

ldfqzlk8  于 2023-04-01  发布在  其他
关注(0)|答案(3)|浏览(132)
y1aodyip

y1aodyip1#

尝试将setlocale(LC_ALL, "Russian")添加到代码的开始。

bbuxkriu

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。

f45qwnt8

f45qwnt83#

解决办法是在系统区域设置中勾选“使用Unicode UTF-8支持全球语言”。谢谢大家的贡献。

相关问题