添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在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 $LANG locale 命令来查看当前的区域设置和字符编码。

  2. 修改终端编码:

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

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

  3. 修改环境变量:

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

文章作者: KnifeZ 本文链接: