我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

win系统下,做各种代码的编译工作的时候,最崩溃的事情就是终端中各种中文输出乱码的问题了。那么,解决方案很简单。就是改变终端的字符编码,具体的来说就是chcp 65001。它能解决大部分的win系统下的终端中文输出的乱码问题。

苏南大叔:win系统,如何修改终端输出编码65001?powershell和cmd - chcp65001
win系统,如何修改终端输出编码65001?powershell和cmd(图6-1)

苏南大叔的程序如此灵动博客,记录苏南大叔和计算机代码的故事。测试环境:win10cmdpowershell

通用临时方案

无论是cmd还是powershell。在执行其他代码之前,先执行一个chcp 65001即可。问题就是:每次都要执行这个代码,甚至修改代码执行脚本。

苏南大叔:win系统,如何修改终端输出编码65001?powershell和cmd - chcp65001-shell
win系统,如何修改终端输出编码65001?powershell和cmd(图6-2)

chcp 65001

参考文章:
https://newsn.net/say/electron-cmd-encoding.html

苏南大叔:win系统,如何修改终端输出编码65001?powershell和cmd - 查看chcp
win系统,如何修改终端输出编码65001?powershell和cmd(图6-3)

永久修改cmd.exe65001

通过修改注册表的方式,可以永久修改cmd.exe的编码。但是,网络上流传的各种设置dword CodePage65001的方式,都没有生效。

苏南大叔:win系统,如何修改终端输出编码65001?powershell和cmd - cmd-autorun
win系统,如何修改终端输出编码65001?powershell和cmd(图6-4)

唯一生效的方式是设置一个autorun的字符串值。它可以在打开cmd.exe的时候,自动执行一些代码。路径为:

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

autorun可以设置为:

chcp 65001
chcp 65001 > nul
chcp 65001 && cls

后面的两个代码的主要目标就是清除输出,个人感觉很不错。推荐使用chcp 65001 > nul

chcp 65001 && cls,这个是苏南大叔自己想的。不过在执行mvn -v命令的时候,发现会出现重大bug。所以只能不用这个cls了。

永久修改powershell.exe65001

网上依然流传各种修改注册表dword CodePage65001的方式的方式,修改powershell.exe的编码,依然失败。

经验验证为需要修改powershell.exe的配置文件Microsoft.PowerShell_profile.ps1。然而,正常情况下来说,这个配置文件并不存在。存在了之后也不生效。所以,修改上有些费事。

生成配置文件

使用powershell的管理员模式,执行下面的代码:

New-Item $PROFILE  -ItemType File -Force

就可以找到配置文件了,位置为:

C:\Users\<用户名>\Documents\WindowsPowerShell

苏南大叔:win系统,如何修改终端输出编码65001?powershell和cmd - profile-ps1
win系统,如何修改终端输出编码65001?powershell和cmd(图6-5)

修改配置文件

增加如下配置:

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

还有另外一个设置,仅供参考,并不是本文的推荐配置,这个不是改成65001,而是936

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(936);

苏南大叔:win系统,如何修改终端输出编码65001?powershell和cmd - 修改输出
win系统,如何修改终端输出编码65001?powershell和cmd(图6-6)

配置生效

执行下面的命令,就可以开启加载自定义配置的模式。

Set-ExecutionPolicy Unrestricted

参考文字:
https://newsn.net/say/powershell-policy.html

结束语

大多数情况下,做了上述设置后,重启命令行后,设置就可以生效了。在命令行里面输出中文乱码的问题,就可以得到解决。但是,这并不是万全之策。其他的情况就具体问题具体分析了。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   win