Windows 修改控制台编码为 UTF-8

本文最后更新于:2021年11月14日 晚上

直入主题

修改 Powershell 默认编码

打开注册表,进入 计算机\HKEY_CURRENT_USER\Console ,该路径下有两个 Powershell 的注册表项,分别对应 32 位和 64 位的版本,如图:

powershell

双击 CodePage 进行修改,基数选择十进制,数值数据修改为 65001 ,点击确定保存即可。

codepage

修改 CMD 默认编码

打开注册表并进入路径 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor ,修改 autorun 项的数值数据为 chcp 65001>nul ,点击确定保存即可。一定注意是 nul 而不是 null

如果没有 autorun 可以新建一个字符串值的项,数值名称设置为 autorun ,其他操作保持一致。

知根知底

查看控制台当前的编码,CMD 和 Powershell 都适用:

chcp

没修改过的话应该会输出:Active code page: 936 ,表示当前的编码为 GBK 编码。

关于代码页可以参考:

微软官方文档:https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/chcp

以及:https://ss64.com/nt/chcp.html

主要记住 GBK 编码对应 936 ,而 UTF-8 编码对应 65001

前文对 CMD 修改编码用的是:

chcp 65001>nul

首先 chcp 65001 即设置编码为 UTF-8 ,不带后面的部分也是可以的,只不过会在启动 CMD 的时候输出一行 Active code page: 65001 ,强迫症可能有点难受,加上后面的部分就可以避免输出这一行。

> 是重定向符,即将前面的输出重定向的后面的设备,可能是文件或设备,而 nul 是 Windows 的空设备名,可以尝试一下在 Windows 中新建一个名叫 nul ,没法创建,一定注意别看成 null 了,如果写成了 null ,会认为这是一个文件,所以每次启动 CMD 都会将 Active code page: 65001 写入到当前目录的 null 文件中,搞不好还会遇到一些奇怪的问题。

重定向:https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_redirection

空设备名 nulhttps://ss64.com/nt/nul.html