不能用英语以外的宽字符串

时间:2016-07-06 19:16:28

标签: c++ windows std

尝试在控制台上打印宽字符串,但似乎只有第一行英文字符正确打印出来。为什么?

#include <iostream>
using namespace std;
int main()
{
    std::wcout << L"Hello" << std::endl;
    std::wcout << L"река" << std::endl;
    std::wcout << L"河流" << std::endl;
    std::wcout << L"川" << std::endl;
    std::wcout << L"река" << std::endl;
    std::wcout << L"Hello" << std::endl;
    return 0;
}

这是控制台输出:

enter image description here

甚至更奇怪的是,似乎它已经吞噬了#pe;&#34;之后的所有角色,而不是打印最后一个&#34; Hello&#34;无论是。

编辑:

尝试了这个SO的建议答案:C++: output contents of a Unicode file to console in Windows

#include <iostream>
#include <fcntl.h>
#include <io.h>
using namespace std;
int main()
{
    _setmode(_fileno(stdout), _O_U16TEXT);

    std::wcout << L"Hello" << std::endl;
    std::wcout << L"река" << std::endl;
    std::wcout << L"河流" << std::endl;
    std::wcout << L"川" << std::endl;
    std::wcout << L"река" << std::endl;
    std::wcout << L"Hello" << std::endl;
    return 0;
}

解决问题的一部分,但中间的中国人和日本人会发生什么?

enter image description here

0 个答案:

没有答案