bat脚本中,中文为什么出现乱码,怎么解决
把控制台代码页设置成 UTF - 8
·
中文乱码原因
1. 代码页不匹配
- 批处理脚本(
.bat文件)运行时,控制台使用的代码页决定了字符的显示方式。若代码页与脚本文件的编码不一致,就会出现中文乱码。例如,脚本文件采用 UTF - 8 编码,而控制台默认代码页为 GBK,此时中文就无法正确显示。
2. 编辑器保存编码问题
- 当你使用不同的文本编辑器保存
.bat文件时,可能会采用不同的编码格式。若保存编码和运行环境的编码不一致,也会造成中文乱码。比如,在某些编辑器里默认以 UTF - 8 无 BOM 格式保存文件,在特定环境下就可能显示乱码。
解决办法
1. 修改控制台代码页
- 可在
.bat文件开头添加chcp命令来更改控制台代码页。若脚本文件是 UTF - 8 编码,可将代码页设置为 65001(UTF - 8)。示例如下:
batch
@echo off
chcp 65001 >nul
echo 这是一段中文测试
pause
在上述代码中,chcp 65001 把控制台代码页设置成 UTF - 8,>nul 让命令执行结果不显示。
2. 保存文件时选择合适的编码
- 不同的文本编辑器保存文件时的编码设置不同。你可以把
.bat文件保存为 ANSI 编码(在中文系统里通常是 GBK)或者 UTF - 8 带 BOM 编码。- ANSI 编码:在 Windows 系统的记事本中,选择 “文件” -> “另存为”,在 “编码” 下拉框中选择 “ANSI”。
- UTF - 8 带 BOM 编码:在 Visual Studio Code 中,点击右下角的编码格式,选择 “通过编码保存”,然后选择 “UTF - 8 with BOM”。
3. 使用 PowerShell 运行脚本
- PowerShell 对 UTF - 8 编码的支持较好。你可以通过 PowerShell 来运行
.bat文件,从而避免中文乱码问题。在 PowerShell 中,使用cmd /c命令来运行.bat文件,示例如下:
powershell
cmd /c "C:\path\to\your\script.bat"
4. 修改注册表(不推荐新手)
- 你还能通过修改注册表来更改控制台默认代码页。不过这种方法有一定风险,操作前需备份注册表。具体步骤如下:
- 按下
Win + R组合键,输入regedit并回车,打开注册表编辑器。 - 找到
HKEY_CURRENT_USER\Console键。 - 在右侧窗口中找到
CodePage项,若不存在则右键新建 “DWORD(32 位)值”,命名为CodePage。 - 双击
CodePage项,将其数值数据设置为65001,然后点击 “确定”。 - 关闭注册表编辑器,重新打开命令提示符窗口。
- 按下
更多推荐



所有评论(0)