win系统,如何修改终端输出编码65001?powershell和cmd
发布于 作者:苏南大叔 来源:程序如此灵动~在win
系统下,做各种代码的编译工作的时候,最崩溃的事情就是终端中各种中文输出乱码的问题了。那么,解决方案很简单。就是改变终端的字符编码,具体的来说就是chcp 65001
。它能解决大部分的win
系统下的终端中文输出的乱码问题。
苏南大叔的程序如此灵动博客,记录苏南大叔和计算机代码的故事。测试环境:win10
,cmd
,powershell
。
通用临时方案
无论是cmd
还是powershell
。在执行其他代码之前,先执行一个chcp 65001
即可。问题就是:每次都要执行这个代码,甚至修改代码执行脚本。
chcp 65001
参考文章:
https://newsn.net/say/electron-cmd-encoding.html
永久修改cmd.exe
65001
通过修改注册表的方式,可以永久修改cmd.exe
的编码。但是,网络上流传的各种设置dword CodePage
为65001
的方式,都没有生效。
唯一生效的方式是设置一个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.exe
65001
网上依然流传各种修改注册表dword CodePage
为65001
的方式的方式,修改powershell.exe
的编码,依然失败。
经验验证为需要修改powershell.exe
的配置文件Microsoft.PowerShell_profile.ps1
。然而,正常情况下来说,这个配置文件并不存在。存在了之后也不生效。所以,修改上有些费事。
生成配置文件
使用powershell
的管理员模式,执行下面的代码:
New-Item $PROFILE -ItemType File -Force
就可以找到配置文件了,位置为:
C:\Users\<用户名>\Documents\WindowsPowerShell
修改配置文件
增加如下配置:
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
还有另外一个设置,仅供参考,并不是本文的推荐配置,这个不是改成65001
,而是936
。
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(936);
配置生效
执行下面的命令,就可以开启加载自定义配置的模式。
Set-ExecutionPolicy Unrestricted
参考文字:
https://newsn.net/say/powershell-policy.html
结束语
大多数情况下,做了上述设置后,重启命令行后,设置就可以生效了。在命令行里面输出中文乱码的问题,就可以得到解决。但是,这并不是万全之策。其他的情况就具体问题具体分析了。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。