Windows 修改控制台编码为 UTF-8
本文最后更新于:2022年3月23日 晚上
直入主题
修改 Powershell 默认编码
打开注册表,进入 计算机\HKEY_CURRENT_USER\Console
,该路径下有两个 Powershell 的注册表项,分别对应 32 位和 64 位的版本,如图:
双击 CodePage
进行修改,基数选择十进制,数值数据修改为 65001
,点击确定保存即可。
修改 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
空设备名 nul
:https://ss64.com/nt/nul.html