在vscode开发时,遇到奇怪的问题,vue、electron等node.js项目开发时控制台输出中文会乱码、修改文件的编码格式为gbk或者utf-8均不起作用。但pyhton脚本输出时能够正常输出中文,后来发现是powershell的编码格式有问题。

一、查看终端当前字符编码

对于Windows系统:

  1. 使用chcp命令查看当前编码:

    • 打开命令提示符(CMD)或PowerShell。

    • 输入chcp并回车。

    • 你会看到一个数字,这个数字代表当前的代码页(即字符编码)。例如,936代表GBK编码。65001代表UTF-8。

  2. 使用chcp命令修改编码:

    • 如果需要切换到其他编码,可以使用chcp命令加上对应的代码页编号。例如,要切换到UTF-8编码,可以输入chcp 65001并回车。

    • 注意:在切换到UTF-8编码后,可能需要修改终端的字体以支持UTF-8编码的字符,比如使用“Lucida Console”字体。

  3. 通过注册表永久修改默认编码:

    • 按下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系统:

  1. 查看当前终端编码:

    • 在终端中,可以使用echo $LANGlocale命令来查看当前的区域设置和字符编码。

  2. 修改终端编码:

    • 对于大多数Linux/macOS的终端模拟器(如Terminal、iTerm2等),你可以在终端的设置或首选项中直接修改字符编码。

    • 通常,你可以在设置或首选项的“文本”或“字体”部分找到字符编码设置。

  3. 修改环境变量:

    • 你也可以修改LANGLC_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。

文章作者: KnifeZ
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KnifeZ
系统运维 Powershell
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝