更改windows的cmd和powershell编码以适应UTF-8编码【默认都是GBK】

前言

做这篇博客是因为,我在使用Java IDEA编译java代码时出现了乱码,因为idea本身的terminal使用的是powershell,不管是cmd还是powershell都是默认GBK编码,所以做此篇博客记录

chcp

chcp可以来查看或打印当前的编码设置

永久更改CMD的默认编码:
  • 通过命令行自动执行:

    • 打开注册表编辑器,导航到 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor

    • 在右侧窗格中,新建一个字符串值,命名为 autorun

    • 双击 autorun,数值数据填写 chcp 65001,这样每次打开CMD时都会自动执行此命令,将编码设置为UTF-8。

65001在编码页编号中代表UTF-8,GBK是936【十进制】

PowerShell的编码设置为UTF-8
  1. 打开PowerShell(以管理员身份)。

  2. 运行以下命令来创建或修改PowerShell的配置文件($PROFILE):

    New-Item $PROFILE -ItemType File -Force

    这个命令会在适当的位置创建一个配置文件,如果文件已经存在,使用 -Force 参数会覆盖它 。

  3. 接下来,使用文本编辑器(如记事本或Visual Studio Code)打开这个配置文件。你可以通过以下命令来编辑它:

    notepad $PROFILE

    或者如果你安装了Visual Studio Code,你可以使用:

    code $PROFILE

    在打开的文件中,添加以下代码:

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

    这行代码将设置PowerShell的输入和输出编码为UTF-8 。

  4. 保存并关闭配置文件。

  5. 为了使更改生效,你需要重新启动PowerShell。

  6. 重新打开PowerShell后,你可以运行以下命令来检查当前的编码设置:

    [console]::InputEncoding
    [console]::OutputEncoding

    如果一切设置正确,你应该看到输出为 System.Text.UTF8Encoding

这样,你的PowerShell的默认编码就被设置为UTF-8了。每次打开新的PowerShell窗口时,都会自动应用这个设置 。

取消掉PowerShell的编码:

要删除PowerShell配置文件($PROFILE),你可以按照以下步骤操作:

  1. 打开PowerShell。

  2. 首先,你需要确认配置文件的确切路径。你可以通过执行以下命令来查看配置文件的路径:

    $PROFILE

    这将返回配置文件的完整路径。

  3. 一旦你知道了文件的路径,你可以使用 Remove-Item 命令来删除它。例如,如果配置文件位于 C:\Users\你的用户名\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,你可以执行以下命令来删除它:

    Remove-Item -Path "$PROFILE"

    请确保将 "$PROFILE" 替换为你在上一步中获取的实际文件路径。

  4. 删除文件后,PowerShell将不再加载该配置文件,这意味着之前设置的UTF-8编码将不再生效,PowerShell将恢复到默认的编码设置。