我有一个旧的 DOS 程序 (EarlyBird - EB.EXE),在我的 WIN XP Pro 系统上已经运行多年。该程序由 .exe 的快捷方式启动 (我认为是 *.pif 文件),由 NTVDM 执行,似乎使用 AUTOEXEC.NT 和 CONFIG.NT。
由于我从美国搬到了英国,我最近将区域选项从美国改为了英国。现在“DOS”窗口无法正确显示“方框绘制”字符。
如果我启动 CMD 提示符并输入 chcp,它会将代码页显示为 850,这似乎没问题,尽管它曾经是 437。但是,Early Bird DOS 程序有一个 DOS shell 退出,如果我使用它并输入 CHCP,我会得到答案 1252。
在@Doktoro Reichard 的帮助下,我进行了各种实验,包括在注册表中设置代码页、通过 chcp 强制启动 .bat 文件到各种代码页,但这些似乎都不起作用。
最后,我将语言环境恢复为美国,现在方框绘制字符工作正常。奇怪的是,从 EB 程序退出 DOS 时,cp 仍然显示为 1252,而 CMD 提示符显示为 437。这很令人困惑。
但是,我确实希望 Windows 区域设置为英国(出于多种原因,例如日期格式、24 小时制时钟等),但我仍然需要我的旧 DOS 程序正常运行。
有没有办法将区域设置设置为英国,同时仍能通过 *.pif 快捷方式在 NTVDM 下获得正确的绘图字符?
谢谢
大卫
答案1
您无意中回答了您的问题:
... 但我最近将区域选项从美国改为英国。
这就是命令提示符无法显示正确字符的原因。根据文档慢性肾衰竭:
CHCP.com
更改活动控制台代码页。默认代码页由 Windows 区域设置决定。
句法:
CHCP code_page code_page - A code page number (e.g. 437)
通过将美国代码页更改为英国代码页,您还改变了字符的外观。如果您查看以下图片,就会明白为什么方框字符没有被渲染:因为它们不在那里:
幸运的是,解决方案很简单:运行chcp 850
(虽然它不是原始的美国版本,但它与代码页 437 基本兼容)或chcp 437
在当前命令提示符开始时运行。
代码页 437 (IBM-ASCII)
。
代码页 1252(西欧)