╧、╤ 和 ╪ 在 Windows 7 cmd 控制台上显示错误

╧, ╤ and ╪ show wrong on Windows 7 cmd console

我有一个 python 脚本,它使用扩展的 ASCII 字符代码 179-218 将 table 绘制到控制台输出,更具体地说:179(│)、185(╣)、186 (║), 187(╗), 188(╝), 200(╚), 201(╔), 202(╩), 203(╦), 204(╠), 205(═), 206(╬), 207 (╧), 209(╤) 和 216(╪).

我 运行 Windows 10 和 Windows 7 机器上的脚本。在 Windows 10 机器上一切正常,但是当我在 Windows 7 机器上 运行 时,它不显示字符 209(╤)、207(╧) 和 216 (╪) 正确。当我将字符复制粘贴到记事本和记事本++时,它显示正确,并且将这些字符直接输入到其他地方也能正常工作。当我直接向控制台输入字符时,也会发生同样的情况,我得到了错误的字符。这是显示的内容:

这是什么原因,有没有办法解决这个问题?

有两个可能的原因:

  1. Python 脚本中的 code page used for encoding the characters 与 Windows 命令处理器用于控制台的代码页不同。
    cmd.exe 默认使用的代码页取决于为使用的帐户配置的 region/country。打开command prompt和运行命令chcp可以看到自己用户账户使用的代码页。如果这个代码页支持完全不正确显示的字符,可以在维基百科或其他网站上查找。

  2. 使用的控制台字体不支持该代码页分别字符编码。

Stack Overflow 上的以下答案可能有助于理解该问题:

  • Box drawing characters in batch scripts

Windows 7 控制台和 Windows 8/8.1/10 控制台之间的默认区别是默认使用的字体,不能使用 [=30= 从批处理文件中更改].

所以我建议比较 cmd.exe 在 Windows 7 和 Windows 10 上使用的代码页。根据 Windows 两者使用的相同代码页为用户帐户配置的国家,我建议配置 Windows 7 字体 ConsolasLucida Console 而不是默认的 Raster 字体 (Terminal) 并检查是否有所不同。

字体有问题另见:

顺便说一下:在我的 Windows 7 机器上,运行ning 批处理文件中显示的字符以 *.lnk 文件开头, 光栅字体 10x18 (Selected Font - Terminal) 在快捷方式文件的属性中配置的确实看起来像字体 Terminal 的字符,而显示在 运行ning cmd 看起来像 Courier New 的字符,尽管 cmd console window 的属性显示 Raster Fonts 8x12 (Selected Font - Terminal).我可以看到在 cmd 属性的 Size 中选择 10x18 而不是 8x12人物变化。所以它看起来像光栅(位图)字体 Terminal 不支持默认大小 8x12 因此 Windows 使用 Courier New 作为替代来显示字符在默认控制台 window 中。我可以在我的 Windows XP 机器上看到相同的行为。奇怪的是微软在WindowsXP/Vista/7上定义了光栅字体Terminal作为默认字体,但是这个字体的*.fon文件的none支持默认字体大小8x12 等替换字体 Courier New 用于在默认控制台 window.

中显示字符