答案1
此非 ASCII 输入问题可在所有 Windows 版本(最高包括 Windows 10)的控制台中重现。控制台主机进程(即conhost.exe
)不是为 UTF-8(代码页 65001)设计的,并且尚未更新以一致支持它。
具体来说,非 ASCII 输入会导致空读取,而空读取被视为文件结束,因此控制台对输入的读取会停止,从而导致输出被截断。
/U 开关cmd.exe
也没什么用,因为它只适用于内部命令。通过将命令输出定向到文件,您可能会从某些应用程序获得更好的结果,但该文件不会具有 UTF-8
字节顺序标记 (BOM)。
简而言之,不要期望太多chcp 65001
,你就不会失望。唯一能在 Windows 中良好运行的 Unicode 版本是 16 位 Unicode。