虽然测试了一些函数来wchar_t的和UTF8之间转换字符串我遇到用Visual C以下怪异结果++速成2008

std::wcout << L"élève" << std::endl;

打印出 “ÚlÞve:”。这显然不是所预期

这显然是一个错误。怎么可能 ?我怎么想对付这样的“功能”?

有帮助吗?

解决方案

C ++编译器不支持Unicode在代码的文件。你必须与他们逃脱版本,而不是取代这些字符。

尝试这种情况:

std::wcout << L"\x00E9l\x00E8ve" << std::endl;

此外,控制台必须支持Unicode以及

更新:

这不会产生在控制台所需的输出,由于主机不支持Unicode。

其他提示

您可能也想看看的这个问题。它显示了你怎么能真正硬编码Unicode字符转换为使用一些编译器文件(我不知道什么样的选项将得到MSVC)。

  

这显然是一个错误。怎么可能?

虽然其它操作系统已经省去传统字符编码和转换为UTF-8,Windows使用的 2 遗留编码的:“OEM”代码页(在命令提示使用)和一个“ANSI “代码页(由GUI中使用)。

您C ++源文件是在ANSI代码页1252(或可能1254,1256,或1258),但是您的控制台将其解释为OEM代码850页。

您IDE和编译器使用ANSI代码页。 控制台使用OEM代码页。

这也很重要你在这些转换功能做的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top