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)字符集。