通过修改注册表实现 cmd 和 PowerShell 默认代码页的修改
前言
在使用 Windows 命令行(cmd)或 PowerShell 时,我们经常遇到中文乱码问题。这通常是因为默认的代码页(Code Page)设置不正确导致的。本文将介绍如何通过修改注册表来永久更改 cmd 和 PowerShell 的默认代码页为 UTF-8(65001),从而彻底解决乱码问题。
什么是代码页?
代码页(Code Page)是字符编码的映射表,用于将字节值映射到特定字符。Windows 系统常用的代码页包括:
| 代码页 | 编码 | 说明 |
|---|---|---|
| 437 | OEM United States | 美国默认 OEM 代码页 |
| 936 | GBK | 简体中文编码 |
| 950 | Big5 | 繁体中文编码 |
| 65001 | UTF-8 | Unicode 通用编码 |
在中文 Windows 系统中,cmd 的默认代码页通常是 GBK(936),这会导致在处理 UTF-8 编码的文件或输出时出现乱码。
方法一:修改注册表(推荐)
1. 修改当前用户的 cmd 代码页
打开注册表编辑器(Win + R 输入 regedit),导航到以下路径:
1 | HKEY_CURRENT_USER\Console |
在右侧窗格中,右键点击 → 新建 → DWORD (32 位) 值,命名为 CodePage。
双击该值,选择十进制,输入 65001,点击确定。
2. 为特定命令行程序设置代码页
如果你只想为特定的命令行程序(如 cmd.exe 或 PowerShell)设置代码页,可以在以下路径创建子项:
1 | HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe |
在这些子项中同样创建 CodePage DWORD 值,设置为 65001。
3. 注册表文件快速导入
你也可以创建一个 .reg 文件来快速导入设置:
1 | Windows Registry Editor Version 5.00 |
注意:
0000fde9是十六进制表示的 65001。
保存为 set_utf8.reg,双击运行并确认导入即可。
方法二:使用命令行设置(临时)
如果你只需要临时更改代码页,可以在命令行中直接使用 chcp 命令:
1 | chcp 65001 |
或者在 PowerShell 中:
1 | [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 |
但这种设置仅在当前会话中有效,关闭窗口后会恢复默认值。
方法三:启用 Windows UTF-8 全局支持(Windows 10 1903+)
Windows 10 1903 及以上版本提供了全局 UTF-8 支持选项:
- 打开 控制面板 → 时钟和区域 → 区域
- 点击 管理 选项卡
- 点击 更改系统区域设置
- 勾选 Beta 版:使用 Unicode UTF-8 提供全球语言支持
- 重启电脑
警告:此设置可能会影响某些旧版应用程序的兼容性,请谨慎使用。
验证设置
设置完成后,重新打开 cmd 或 PowerShell,输入以下命令验证:
1 | chcp |
如果显示 Active code page: 65001,则说明设置成功。
你也可以测试中文输出:
1 | echo 测试中文显示 |
PowerShell 配置文件方式
除了注册表,你还可以修改 PowerShell 配置文件来自动设置代码页:
打开或创建配置文件:
1
notepad $PROFILE
添加以下内容:
1
2
3
4
5
6# 设置输出编码为 UTF-8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::InputEncoding = [System.Text.Encoding]::UTF8
# 设置代码页
chcp 65001 | Out-Null保存后重启 PowerShell 即可生效。
注意事项
备份注册表:修改注册表前建议先备份,以防出现问题可以恢复。
某些程序兼容性:将代码页设置为 UTF-8 后,某些依赖 GBK 编码的旧程序可能出现显示问题。
管理员权限:如果要为所有用户设置,需要在
HKEY_LOCAL_MACHINE下修改,这需要管理员权限。字体支持:确保命令行字体支持 UTF-8 字符,建议使用 Consolas、Cascadia Code 或 Sarasa Gothic(更纱黑体) 等等宽字体。
总结
通过修改注册表设置 cmd 和 PowerShell 的默认代码页为 UTF-8,可以一劳永逸地解决命令行乱码问题。推荐使用方法一的注册表方式,既简单又持久。如果你是开发人员或经常处理多语言文本,强烈建议进行此设置。
参考链接: - Microsoft Docs - 使用 UTF-8 代码页 - Windows 控制台文档
- Title: 通过修改注册表实现 cmd 和 PowerShell 默认代码页的修改
- Author: Ryan Lu
- Created at : 2026-03-15 00:00:00
- Updated at : 2026-03-15 03:14:18
- Link: http://ryan-hub.site/7bf64b00727c/
- License: This work is licensed under CC BY-NC-SA 4.0.