命令提示符可以显示unicode字符吗?

时间:2011-02-02 19:53:36

标签: c++ windows unicode visual-studio-2005

例如:

cout << "你好" << endl;

5 个答案:

答案 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