【发布时间】:2017-03-04 04:30:08
【问题描述】:
我正在阅读 Bjarne Stroustrup 的“C++ 编程语言”,在第 7.3.2.2 节中通过打印说明:
u8"the officials vowels in Danish are:a, e, i o, u, \u00E6, \u00F8, \u00E5 and y."
你会得到:
丹麦语的官方元音有:a、e、i o、u、æ、ø、å 和 y。
但是,如果我在自己的机器上尝试这个,我会得到这个:
丹麦语的官方元音有:a、e、i o、u、├Ž、├Ş、├ą和y。
我做错了什么?
【问题讨论】:
-
你的 shell/命令提示符能打印 utf-8 吗?
-
我不知道。如何检查?
-
在 Windows 机器上,您很容易因为 Microsoft 的运行时不支持 UTF-8 语言环境而轻松执行此操作。请参阅
setlocale的文档。有很多方法可以做到这一点,我之前已经回答过,但现在我的时间有限(秒,抱歉)。 -
非常感谢。我试图找到你的答案,但我找不到。可以给我链接吗?
-
Stroustrup 在这里做了一个巨大的假设,这在 Windows 上根本不成立:向控制台发送 UTF-8 字节将显示正确的字符。 Windows 比其他任何东西都重视向后兼容性,它向您显示的字符与 35 年前相同的字节序列显示的字符相同。这比 Unicode 存在的时间要长得多。他们半心半意地尝试在控制台中支持 UTF-8,但它有问题,而不是默认设置,因此没有人使用它。在运行程序之前尝试命令
chcp 65001。