chm*_*ike 3 c++ unicode wchar-t mojibake
在测试一些函数来转换wchar_t和utf8之间的字符串时,我在Visual C++ express 2008中遇到了以下奇怪的结果
std::wcout << L"élève" << std::endl;
Run Code Online (Sandbox Code Playgroud)
打印出"ÚlÞve:",这显然不是预期的.
这显然是一个错误.怎么可能 ?我怎么想处理这样的"功能"?
Dav*_*nde 12
C++编译器不支持代码文件中的Unicode.您必须使用转义版本替换这些字符.
试试这个:
std::wcout << L"\x00E9l\x00E8ve" << std::endl;
Run Code Online (Sandbox Code Playgroud)
此外,您的控制台也必须支持Unicode.
更新:
它不会在控制台中生成所需的输出,因为控制台不支持Unicode.