根本原因是dosbox 0.74默认不加载简体中文代码页且未挂载中文dos环境;需修改配置文件启用cp936、挂载ccdos97、加载ega.cpi字体,并验证chcp返回936。

电脑运行旧版DOS游戏时中文显示为方块、问号或错位字符,根本原因是DOSBox 0.74默认不加载简体中文代码页,且未挂载兼容的中文DOS环境。
修改dosbox-0.74.conf启用GB2312/GBK支持
打开文件资源管理器,地址栏直接粘贴:【%LOCALAPPDATA%\DOSBox\】,回车进入该目录,找到并用记事本(或VS Code)打开dosbox-0.74.conf。
在文件末尾找到[dos]节(若不存在则手动添加一行[dos]),在其下方新增一行:dosv=cpm cp936。这行指令强制DOSBox在启动DOS内核时加载简体中文代码页936(GBK),否则CCDOS或UCDOS无法识别汉字字形数据。
继续向下找到[sdl]节,在其内部添加或修改两行:output=openglnb和fulldouble=true。openglnb能避免光标在中文字符后偏移一格,fulldouble可缓解部分老游戏因刷新率导致的闪烁乱码。
在autoexec中正确挂载并启动中文系统
定位到配置文件中的[autoexec]节,在其内部按顺序写入以下三行命令:
mount c d:\dos → c: → cd\ccdos97 → cc
注意:d:\dos是存放CCDOS97文件的实际路径,必须与你解压后的目录完全一致;cc是CCDOS97的主程序名,大小写敏感,不能写成CC或Cc。
如果挂载后仍显示乱码,说明EGA字体未加载。在cd\ccdos97之后、cc之前插入两行:mode con cp prepare=((936) d:\dos\ega.cpi) → mode con cp select=936。ega.cpi必须是从CCDOS97安装包中提取的真实字体文件,放在同一目录下,否则prepare命令会静默失败。
快速验证当前代码页是否生效
方法一:启动DOSBox后,在DOS提示符下直接输入chcp,回车。若返回Active code page: 936,说明代码页已切换成功。
方法二:输入chcp 65001临时切到UTF-8,再运行游戏——仅对极少数UTF-8编码的现代DOS工具有效,但绝大多数老游戏会彻底崩溃,【切勿在CCDOS/UCDOS已加载后执行此操作】。
方法三:在DOSBox窗口标题栏右键→属性→选项→查看“当前代码页”数值,应显示936而非437或65001。
替换为DOSBox-X一劳永逸解决
下载DOSBox-X最新稳定版(如0.85.0),安装后无需任何配置,直接拖入游戏目录下的EXE文件即可运行,中文自动识别GB2312/GBK,光标定位精准,字体渲染清晰。
若必须使用DOSBox 0.74,且上述步骤后仍有乱码,将配置文件中[cpu]节下的cycles=auto改为cycles=fixed 3000,过低的CPU模拟周期会导致CCDOS初始化中断超时,字库加载不全。











