【windows】终端/命令行显示中文乱码
在 Windows 系统中,终端显示中文乱码通常由编码设置不匹配导致。以下是综合多种方法的解决方案:
一、临时切换编码(适用于当前会话)
- 使用
chcp
命令
在 CMD 或 PowerShell 中执行以下命令,将编码临时切换为 UTF-8:
此方法仅对当前窗口生效,关闭后恢复默认编码。chcp 65001
二、永久修改默认编码
方法 1:通过注册表修改(适用于 CMD)
-
修改 CMD 的 CodePage
- 打开注册表编辑器(
Win + R
→regedit
) - 导航到路径:
HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
- 新建或修改
CodePage
项(DWORD 值),设为十进制65001
(对应十六进制0xFDE9
)。
- 打开注册表编辑器(
-
设置自动执行命令
- 导航到路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
- 新建字符串值
AutoRun
,数据设为chcp 65001
。此设置会在每次启动 CMD 时自动执行编码切换。
- 导航到路径:
方法 2:系统区域设置(全局生效)
- 启用 Unicode UTF-8 支持
- 打开“控制面板”→“时钟和区域”→“区域”→进入“管理”选项卡→点击“更改系统区域设置”。
- 勾选 “使用 Unicode UTF-8 提供全球语言支持”,重启后生效。
三、调整终端字体
某些字体不支持中文字符渲染,需手动设置:
- 右键 CMD 标题栏→“属性”→“字体”选项卡,选择支持中文的字体(如
Lucida Console
或Consolas
)。 - 若字体缺失,可通过注册表添加字体支持(路径
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
)。
四、PowerShell 的特殊设置
- 临时修改编码
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
- 永久修改
- 创建或编辑 PowerShell 配置文件
Microsoft.PowerShell_profile.ps1
,添加:[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
- 执行
Set-ExecutionPolicy Unrestricted
允许配置生效。
- 创建或编辑 PowerShell 配置文件
五、IDE 终端的额外配置
对于 VS Code、WebStorm 等开发工具的内置终端:
- VS Code:在
settings.json
中添加:"terminal.integrated.shellArgs.windows": ["-NoExit", "/c", "chcp 65001"]
- WebStorm:进入
Settings → Tools → Terminal
,确保编码与系统一致。
注意事项
- 风险提示:修改注册表前建议备份,错误操作可能导致系统不稳定。
- 兼容性:部分旧程序可能不支持 UTF-8,需根据场景调整编码(如切换回
chcp 936
使用 GBK)。
通过以上设置,可覆盖大多数中文乱码场景。若问题仍未解决,可检查源码文件编码是否与终端设置一致,或排查系统字体损坏问题。