跳到主要内容

批处理乱码问题

在win10之前 Windows自带的记事本使用ANSI来保存文件
这个ANSI并不是一编码方式 其表示 当前系统默认的本地代码页(Code Page)

ANSI 与系统设置的语言有关 不同语言下的默认本地代码页也不同
其相当于一个转换表将原始的二进制内容转换成可读的字符
如果创建和解读时使用的编码不一样就会出现乱码

ANSI对于简体中文来说是 936 (GBK / GB18030)
繁体则是是 950 或 1361 对应 Big5 和 HKSCS
日语 932 对应 Shift-JIS

虽然从win10版本 1903(Build 18362,于 2019 年 5 月正式发布)开始
记事本默认以utf8保存文件 但是cmd默认依然默认使用本地代码页
这就导致在win10下用记事本创建的批处理在运行时会出现乱码

解决方法也很简单在批处理的第一行加上添加上 chcp 65001
将页代码切换为 utf8 当然这只对单个批处理文件有效
使用 chcp 可以输出当前使用的页代码