【发布时间】:2016-10-18 20:22:09
【问题描述】:
可以使用WriteConsoleW 函数将Unicode 字符写入Windows 控制台。在我的 Windows 7 机器上,控制台似乎不支持基本多语言平面之外的字符。此外,组合字符显示在基本字符之后,而不是实际组合。
这些限制是否也存在于更高版本的 Windows 中? Windows 控制台中的 Unicode 是否还有其他限制?
【问题讨论】:
-
Windows 通过创建窗口的方式知道窗口使用什么编码 - CreateWindowsExA (ansi) 或 CreateWindowsExW (Unicode)。 Windows 会自动从发送窗口转换为接收窗口。因此,将 Unicode 字符发送到 Ansi 窗口,Ansi 窗口会接收从 Unicode 转换而来的 Ansi 字符。控制台窗口使用 DOS 并发生相同的转换。所以如果可能,writeConsoleW 将被转换为 Dos 字符。
-
但是控制台可以使用
CHCP命令转换为任何代码页,如果cmd启动cmd /u,内部命令可以输出Unicode。见chcp /?和cmd /?。 -
Windows 控制台不支持完整的
UTF-16。 “It's limited to UCS-2, i.e. limited to characters in the basic multilingual plane (BMP)”。引用:@eryksun 2015 年 2 月 23 日 6:22 -
字符在控制台窗口中的显示方式取决于控制台窗口使用的字体以及该字体支持的整个 Unicode 表中的字符集。
-
不知道为什么这个问题收到-1,对我来说似乎完全有效。我只是想知道同样的问题,来这里澄清一下。
标签: windows unicode cmd console