搜索 K
主题
Windows 系统默认使用 GBK(代码页 936)编码,这在处理多语言文本或与 Linux/macOS 协作时容易出现乱码问题。本文介绍多种将系统编码切换为 UTF-8 的方法,并提供一键配置脚本。
适用于 Windows 10 1903+ 和 Windows 11,将系统默认代码页从 GBK 改为 UTF-8(代码页 65001)。
Win + I 打开 设置 → 时间和语言 → 语言和区域locale-emulator(Scoop 可安装)为特定旧软件模拟 GBK 区域# 查看当前系统代码页,65001 表示 UTF-8
chcp在当前终端窗口中临时切换为 UTF-8,关闭窗口后失效,无需重启。
chcp 65001| 代码页 | 编码 | 说明 |
|---|---|---|
| 936 | GBK | 简体中文(默认) |
| 950 | Big5 | 繁体中文 |
| 65001 | UTF-8 | Unicode |
| 437 | IBM437 | 英文(美国) |
在当前 CMD 窗口中临时切换为 UTF-8,关闭窗口后失效:
chcp 65001通过注册表的 AutoRun 机制,让每次打开 CMD 时自动执行 chcp 65001,需要管理员权限。
方式一:命令行修改
:: 以管理员身份运行 CMD,执行以下命令
reg add "HKLM\SOFTWARE\Microsoft\Command Processor" /v AutoRun /t REG_SZ /d "@chcp 65001>nul" /f方式二:手动编辑注册表
Win + R → 输入 regedit → 回车HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command ProcessorAutoRun,数据设为 @chcp 65001>nul还原方法:
:: 删除 AutoRun 键值即可还原
reg delete "HKLM\SOFTWARE\Microsoft\Command Processor" /v AutoRun /fHKLM\SOFTWARE\Microsoft\Command Processor\AutoRun 中的命令会在每个 CMD 实例启动时自动执行。@ 前缀表示不回显命令本身,>nul 表示隐藏输出。
在 PowerShell 配置文件中设置编码,对所有 PowerShell 会话生效,无需重启系统。
# 1. 打开或创建 PowerShell 配置文件
notepad $PROFILE在文件中添加以下内容:
# UTF-8 编码设置
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
chcp 65001 > $null保存后重启 PowerShell 即可生效。
$PROFILE 路径$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1| 方法 | 影响范围 | 是否需要重启 | 风险 |
|---|---|---|---|
| 系统区域设置(方法一) | 全局所有程序 | 是 | 部分旧软件可能乱码 |
chcp 65001(方法二) | 当前终端窗口 | 否 | 无,关闭窗口后失效 |
| CMD AutoRun(方法三) | 所有 CMD 会话 | 否 | 无,仅影响 CMD |
| PowerShell Profile | 所有 PowerShell 会话 | 否 | 无,仅影响 PowerShell |
# 方式一:在脚本开头声明编码
# -*- coding: utf-8 -*-
# 方式二:打开文件时指定编码
with open("file.txt", encoding="utf-8") as f:
content = f.read()# 让 Git 正确显示中文文件名
git config --global core.quotepath false在 VS Code 的 settings.json 中添加:
{
"terminal.integrated.defaultEncoding": "utf8"
}以下脚本可一键完成 UTF-8 编码配置(系统全局、CMD、PowerShell Profile、Git),支持交互式菜单和还原操作。
Set-UTF8.ps1# 交互式菜单(无参数时自动弹出)
.\Set-UTF8.ps1
# 应用全部配置
.\Set-UTF8.ps1 -All
# 仅配置 CMD 和 PowerShell
.\Set-UTF8.ps1 -Cmd -PowerShellProfile
# 还原所有修改
.\Set-UTF8.ps1 -Revertset-utf8.bat:: 双击运行或在 CMD 中执行
set-utf8.batset-utf8.reg — 双击导入,设置系统全局 UTF-8 + CMD 默认 UTF-8revert-utf8.reg — 双击导入,还原为 GBK 编码导入注册表文件后需要重启系统才能生效。