解决powershell输出中文乱码问题
在vscode开发时,遇到奇怪的问题,vue、electron等node.js项目开发时控制台输出中文会乱码、修改文件的编码格式为gbk或者utf-8均不起作用。但pyhton脚本输出时能够正常输出中文,后来发现是powershell的编码格式有问题。
一、查看终端当前字符编码
对于Windows系统:
使用
chcp
命令查看当前编码:打开命令提示符(CMD)或PowerShell。
输入
chcp
并回车。你会看到一个数字,这个数字代表当前的代码页(即字符编码)。例如,
936
代表GBK编码。65001
代表UTF-8。
使用
chcp
命令修改编码:如果需要切换到其他编码,可以使用
chcp
命令加上对应的代码页编号。例如,要切换到UTF-8编码,可以输入chcp 65001
并回车。注意:在切换到UTF-8编码后,可能需要修改终端的字体以支持UTF-8编码的字符,比如使用“Lucida Console”字体。
通过注册表永久修改默认编码:
按下
Win + R
,输入regedit
打开注册表编辑器。导航到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
(对于32位系统)或HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Command Processor
(对于64位系统)。在右侧窗格中,右键点击空白处,选择“新建” > “字符串值”,命名为
Autorun
。双击新建的
Autorun
字符串值,将值数据设置为chcp 65001
(或其他你想要的代码页编号)。重启命令提示符或重新登录用户会话以使更改生效。
对于Linux/macOS系统:
查看当前终端编码:
在终端中,可以使用
echo $LANG
或locale
命令来查看当前的区域设置和字符编码。
修改终端编码:
对于大多数Linux/macOS的终端模拟器(如Terminal、iTerm2等),你可以在终端的设置或首选项中直接修改字符编码。
通常,你可以在设置或首选项的“文本”或“字体”部分找到字符编码设置。
修改环境变量:
你也可以修改
LANG
、LC_ALL
等环境变量来永久更改字符编码。这通常在你的shell配置文件(如~/.bashrc
、~/.bash_profile
、~/.zshrc
等)中完成。
二、修改终端的默认编码
在Windows Terminal中设置PowerShell的字符编码,可以通过几种不同的方法来实现。以下是一些建议的步骤,以及如何根据需求进行配置:
1. 临时更改当前PowerShell会话的编码
在PowerShell会话中,你可以使用chcp
命令来临时更改字符编码。例如,要将编码更改为UTF-8,可以输入以下命令:
chcp 65001
这里,65001
是UTF-8的代码页编号。但请注意,这只会影响当前的PowerShell会话。
2. 永久更改PowerShell的默认编码
要永久更改PowerShell的默认编码,你可以通过修改PowerShell的配置文件(profile)来实现。以下是如何操作的步骤:
2.1 以管理员身份打开PowerShell
确保你以管理员身份运行PowerShell,以便能够修改配置文件。
2.2 创建或修改PowerShell的Profile文件
PowerShell支持多个配置文件,但最常见的是Microsoft.PowerShell_profile.ps1
。你可以使用以下命令来检查该文件的存在,并创建它(如果不存在):
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
执行上述命令后,你可以使用$PROFILE
变量来查看Profile文件的位置。
2.3 编辑Profile文件
使用你喜欢的文本编辑器(如记事本、Visual Studio Code等)打开Profile文件。然后,在文件的末尾添加以下行来设置默认编码为UTF-8:
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
保存并关闭文件。
2.4 重启PowerShell
重启PowerShell会话,以使更改生效。现在,每次启动新的PowerShell会话时,默认编码都将被设置为UTF-8。