Windows CMD批处理脚本显示框绘制字符的文件编码选择咨询
批处理脚本显示框字符的文件编码选择方案
要让Windows CMD(包括XP、7、8和ReactOS环境)里的批处理脚本正确显示单线/双线框字符,核心原则是让批处理文件的编码和你通过chcp设置的代码页完全匹配,具体细节如下:
如果你使用
chcp 437(IBM PC原始DOS编码,包含完整的DOS框字符集):
批处理文件必须保存为IBM437编码(记事本里通常显示为「OEM美国」)。这个编码是代码页437的原生ANSI格式,CMD用437解析时,能直接正确识别文件里的框字符二进制值。如果你使用
chcp 850(西欧DOS编码,同样包含框字符):
对应保存为IBM850编码(记事本里通常显示为「OEM西欧」),原理和上面一致,确保文件编码与当前CMD代码页完全对应。
避坑提醒:别用UTF-8(带/不带BOM都不行)
- 带BOM的UTF-8:CMD加载脚本时,开头的UTF-8 BOM会被当成命令的一部分,直接抛出语法错误,脚本根本跑不起来。
- 不带BOM的UTF-8:UTF-8里的框字符(比如U+2500系列)和DOS代码页437/850的框字符编码完全不兼容,即使你设了
chcp,CMD也会把UTF-8的字符错误解析成乱码,显示不出正常的框线。
额外小技巧
编写脚本时,确保你用的编辑器(比如记事本)也是以对应编码打开文件的,不然你输入的框字符本身就会被错误编码,保存后自然显示不正常。比如编辑437编码的脚本时,要在记事本的「打开」对话框里选择「IBM437」编码打开,避免编辑时出现乱码。
内容的提问来源于stack exchange,提问作者Daniel Perez




