WinXP Pro下的DOS程序

WinXP Pro下的DOS程序

我有一个旧的 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)

代码页 437 (IBM-ASCII)

代码页 1252(西欧)

代码页 1252(西欧)

相关内容