跳转到内容
关系图谱

Windows UTF-8 编码设置

1,091 字 4 分钟

Windows UTF-8 编码设置

概述

Windows 系统默认使用 GBK(代码页 936)编码,这在处理多语言文本或与 Linux/macOS 协作时容易出现乱码问题。本文介绍多种将系统编码切换为 UTF-8 的方法,并提供一键配置脚本。

方法一:系统全局设置(推荐)

适用于 Windows 10 1903+ 和 Windows 11,将系统默认代码页从 GBK 改为 UTF-8(代码页 65001)。

操作步骤

  1. Win + I 打开 设置时间和语言语言和区域
  2. 点击 管理语言设置(打开控制面板的「区域」窗口)
  3. 切换到 管理 选项卡
  4. 点击 更改系统区域设置
  5. 勾选 Beta 版:使用 Unicode UTF-8 提供全球语言支持
  6. 点击 确定重启系统
注意事项
  • 此选项仍标记为 Beta,部分旧版中文软件(如某些国产软件)可能出现乱码
  • 如果出现兼容性问题,取消勾选并重启即可恢复
  • 可配合 locale-emulator(Scoop 可安装)为特定旧软件模拟 GBK 区域

验证方式

powershell
# 查看当前系统代码页,65001 表示 UTF-8
chcp

方法二:临时修改终端编码

在当前终端窗口中临时切换为 UTF-8,关闭窗口后失效,无需重启

powershell
chcp 65001
常用代码页
代码页编码说明
936GBK简体中文(默认)
950Big5繁体中文
65001UTF-8Unicode
437IBM437英文(美国)

方法三:CMD 编码设置

临时设置

在当前 CMD 窗口中临时切换为 UTF-8,关闭窗口后失效:

cmd
chcp 65001

永久设置(修改注册表)

通过注册表的 AutoRun 机制,让每次打开 CMD 时自动执行 chcp 65001需要管理员权限

方式一:命令行修改

cmd
:: 以管理员身份运行 CMD,执行以下命令
reg add "HKLM\SOFTWARE\Microsoft\Command Processor" /v AutoRun /t REG_SZ /d "@chcp 65001>nul" /f

方式二:手动编辑注册表

  1. Win + R → 输入 regedit → 回车
  2. 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
  3. 新建或修改字符串值 AutoRun,数据设为 @chcp 65001>nul

还原方法:

cmd
:: 删除 AutoRun 键值即可还原
reg delete "HKLM\SOFTWARE\Microsoft\Command Processor" /v AutoRun /f
AutoRun 机制

HKLM\SOFTWARE\Microsoft\Command Processor\AutoRun 中的命令会在每个 CMD 实例启动时自动执行。@ 前缀表示不回显命令本身,>nul 表示隐藏输出。


方法四:PowerShell Profile 永久设置

在 PowerShell 配置文件中设置编码,对所有 PowerShell 会话生效,无需重启系统

操作步骤

powershell
# 1. 打开或创建 PowerShell 配置文件
notepad $PROFILE

在文件中添加以下内容:

powershell
# UTF-8 编码设置
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
chcp 65001 > $null

保存后重启 PowerShell 即可生效。

$PROFILE 路径
  • PowerShell 7+$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
  • Windows PowerShell 5.1$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

方法对比

方法影响范围是否需要重启风险
系统区域设置(方法一)全局所有程序部分旧软件可能乱码
chcp 65001(方法二)当前终端窗口无,关闭窗口后失效
CMD AutoRun(方法三)所有 CMD 会话无,仅影响 CMD
PowerShell Profile所有 PowerShell 会话无,仅影响 PowerShell

常见问题

Python 脚本中文乱码

python
# 方式一:在脚本开头声明编码
# -*- coding: utf-8 -*-

# 方式二:打开文件时指定编码
with open("file.txt", encoding="utf-8") as f:
    content = f.read()

Git 中文路径乱码

powershell
# 让 Git 正确显示中文文件名
git config --global core.quotepath false

VS Code 终端乱码

在 VS Code 的 settings.json 中添加:

json
{
  "terminal.integrated.defaultEncoding": "utf8"
}

辅助脚本

以下脚本可一键完成 UTF-8 编码配置(系统全局、CMD、PowerShell Profile、Git),支持交互式菜单和还原操作。

PowerShell 版

  • 文件:Set-UTF8.ps1
  • 支持参数化调用和交互式菜单,可选配置项
  • 系统级修改需要管理员权限
powershell
# 交互式菜单(无参数时自动弹出)
.\Set-UTF8.ps1

# 应用全部配置
.\Set-UTF8.ps1 -All

# 仅配置 CMD 和 PowerShell
.\Set-UTF8.ps1 -Cmd -PowerShellProfile

# 还原所有修改
.\Set-UTF8.ps1 -Revert

BAT 版

  • 文件:set-utf8.bat
  • 双击即可运行,自动请求管理员权限
  • 支持交互式菜单和多选
cmd
:: 双击运行或在 CMD 中执行
set-utf8.bat

注册表文件

  • 配置文件:set-utf8.reg — 双击导入,设置系统全局 UTF-8 + CMD 默认 UTF-8
  • 还原文件:revert-utf8.reg — 双击导入,还原为 GBK 编码
注意

导入注册表文件后需要重启系统才能生效。

相关笔记