bat 文件的编码,主要看文件保存编码和 CMD 控制台代码页是否一致。
常见编码
| 编码 | 说明 | 适用场景 |
|---|---|---|
| ANSI / GBK | 中文 Windows 下通常对应 GBK,代码页 936 | 传统 bat 脚本,兼容性最好 |
| UTF-8 | 国际通用编码,代码页 65001 | 跨平台、现代编辑器环境 |
方案一:统一用 ANSI / GBK
如果你的 bat 脚本只在中文 Windows 上跑,最稳妥的做法是:
- 用记事本打开
.bat文件; - 点击 文件 → 另存为;
- 编码选择 ANSI;
- 保存后重新运行。
脚本开头可以加一句,确保控制台也按 GBK 解析:
@echo off
chcp 936 >nul
方案二:统一用 UTF-8
如果你希望 bat 文件和现代编辑器、跨平台工具保持一致,可以用 UTF-8:
@echo off
chcp 65001 >nul
echo 当前编码已切换为 UTF-8
pause
同时把文件保存为 UTF-8。
注意:chcp 65001 只是把当前 CMD 窗口切换成 UTF-8,关闭窗口后会恢复默认设置。
方案三:查看当前编码
在 CMD 中输入:
chcp
如果显示:
活动代码页: 936
说明当前是 GBK/ANSI;如果显示:
活动代码页: 65001
说明当前是 UTF-8。
建议
- 只在中文 Windows 上运行:优先用 ANSI/GBK。
- 需要跨平台、跨编辑器协作:优先用 UTF-8 + chcp 65001。
- 如果 bat 里出现中文路径、中文变量、中文提示,编码不匹配最容易导致乱码。
- 如果脚本逻辑比较复杂,也可以考虑改用 PowerShell,它对 UTF-8 和中文支持更友好。