关于Windows命令行的字符集

win10自带2个命令行工具,cmd 和 powershell,默认字符集 936(GBK)。其他常用的字符集 437(美国)、65001(UTF-8)。

查看当前窗口字符集:

chcp

更改当前窗口字符集:

chcp 65001

我们想要在打开窗口的时候自动设置好字符集,不然每次都得设置一次可太麻烦了。

方法一:系统设置(以下三个方法打开区域设置)

1. 开始 – 设置 – 时间和语言 – 日期、时间和区域格式设置 – 其他日期、时间和区域设置 – 区域

2. 控制面板(小图标) – 区域

3. 运行 – intl.cpl

区域设置 – 管理(标签) – 更改系统区域设置… – [选中]Beta版:使用 Unicode UTF-8 提供全球语言支持 – 重启系统

重启以后 cmd 和 powershell 默认都使用 65001(UTF-8)字符集。

但是有个比较严重的问题,有部分软件对 UTF-8 支持不好会出现乱码。

方法二:功能设置

针对 cmd

打开注册表,运行 – regedit

[HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun] 修改值为 chcp 65001 >NUL

如果在 Command Processor 下没有 Autorun,自行添加一条 字符串值(S)。

这样在启动 cmd 的时候会先执行 chcp 65001 将字符集调整为 UTF-8。

针对 powershell

以管理员启动 powershell,执行

New-Item $PROFILE -ItemType File -Force

在 powershell 的默认启动目录下创建启动脚本 %USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,再执行命令

Set-ExecutionPolicy Unrestricted

一定要管理员才能执行。这个命令允许 powershell 启动的时候执行启动脚本,如果不执行该命令会在启动 powershell 的时候提示禁止运行脚本。

编辑启动脚本 Microsoft.PowerShell_profile.ps1,添加一行内容

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding

以后启动 powershell 默认使用 65001(UTF-8)字符集。

此条目发表在系统分类目录,贴了, 标签。将固定链接加入收藏夹。