例如:
cout << "你好" << endl;
答案 0 :(得分:3)
这取决于平台和命令提示符的编码。
那就是说,你可能会有更多运气
std::wcout << L"你好" << std::endl;
答案 1 :(得分:2)
由于您正在谈论Windows,因此您正在谈论控制台窗口。
Windows控制台窗口是基于Unicode的,更具体地说是UCS-2(基本多语言平面,基本上是原始的16位Unicode)。
与其他答案中的建议相反,你不能真正做更多的事情。 std::wcout
的结果与std::cout
的结果。标准宽输出流只是转换为程序的单字节执行字符编码。默认情况下,Windows中的OEM字符编码(可以通过未记录的注册表项进行配置)。
但您可以通过Windows API的控制台功能输出Unicode。
注意:将控制台窗口设置为UTF-8 并不是一个好主意。然后[cmd.exe]命令解释器只是默默地忽略大多数命令。至少在Windows XP和更早版本中。
我只是将OEM设置为Windows ANSI Western(通过上述未记录的注册表项),它适用于大多数用途,但当然不适用于中文。这是代码页1252.或者您可以通过每个命令解释器实例中的命令chcp 1252
手动执行此操作,以及其他方式。
干杯&amp;第h。,
答案 2 :(得分:1)
取决于操作系统和实施。当前活跃的C ++标准甚至没有谈论Unicode。
在Windows上我相信你可以使用宽字符版本。您的代码需要是:
std::wcout << L"ni3 hao3" << std::endl;
但是,您可能必须专门输入Unicode字符代码,因为您用于编写C ++源代码的代码集可能不是Unicode。
答案 3 :(得分:1)
这完全取决于您使用的控制台/ shell。
有些shell可以配置为使用UTF-8(我很久以前就做过),所以可以完成但是我忘记了细节。
在一个人真的可以更具体之前,我们需要知道你正在使用的shell以及shell运行的平台(有关每个版本的完整详细信息)。
答案 4 :(得分:1)
Windows控制台部分支持Unicode。例如,它不支持从右到左的语言。
cout
的示例不会输出unicode。请改用wcout
。或者使用WriteConsoleW