1. 修改批处理文件编码为ANSI/GBK
这是最简单的方法,适用于中文Windows系统:
chcp 936
echo 中文测试
pause
如何保存为ANSI编码:
- 用记事本打开批处理文件
- 点击"文件" → "另存为"
- 在编码下拉菜单中选择"ANSI"
- 保存文件
2. 修改批处理文件编码为UTF-8带BOM
chcp 65001
echo 中文测试
pause
如何保存为UTF-8 BOM编码:
- 用记事本打开批处理文件
- 点击"文件" → "另存为"
- 在编码下拉菜单中选择"UTF-8"
- 保存文件
3. 使用合适的代码页切换
在批处理文件开头添加:
@echo off
chcp 65001 >nul 2>nul
REM 或者使用 chcp 936 用于GBK编码
4. 使用mode con设置控制台属性
@echo off
mode con codepage select=65001
chcp 65001
echo 中文显示正常
pause
5. 修改注册表(永久解决方案)
修改控制台默认代码页:
reg add "HKCU\Console" /v "CodePage" /t REG_DWORD /d 65001 /f
恢复默认:
reg add "HKCU\Console" /v "CodePage" /t REG_DWORD /d 936 /f
6. 使用PowerShell解决
在批处理中调用PowerShell显示中文:
@echo off
powershell -Command "Write-Host '中文内容' -ForegroundColor Green"
或者保存为UTF-8文件后执行:
powershell -Command "Get-Content 'script.bat' -Encoding UTF8 | cmd"
7. 推荐的最佳实践
@echo off
REM 设置代码页为UTF-8
chcp 65001 >nul
REM 设置控制台字体为支持中文的字体
if defined PROCESSOR_ARCHITEW6432 (
reg add "HKCU\Console" /v "FaceName" /t REG_SZ /d "新宋体" /f
) else (
reg add "HKCU\Console" /v "FaceName" /t REG_SZ /d "SimSun-ExtB" /f
)
echo 中文显示测试
echo ==============
echo 这是一个中文字符串
pause
8. 注意事项
字体支持:确保控制台字体支持中文(如SimSun-ExtB、NSimSun等)
文件编码一致性:批处理文件编码和控制台代码页要匹配
Windows版本差异:
- Windows 7/8:主要使用GBK(936)
- Windows 10/11:推荐使用UTF-8(65001)
9. 快速检测脚本
创建一个测试脚本:
@echo off
echo 正在测试中文显示...
echo.
echo 当前代码页:%=%
for /f "tokens=2 delims=:" %%i in ('chcp') do set codepage=%%i
echo CodePage: %codepage%
echo.
echo 中文测试:你好,世界!
pause
建议方案:
- 对于简单的批处理,使用ANSI编码 + chcp 936
- 对于需要国际化的脚本,使用UTF-8 BOM编码 + chcp 65001
- 如果涉及文件操作,确保读写时使用相同的编码