VSCode控制台乱码

乱码原因

乱码本质就是编码集合不一样,代码中一般会使用UTF-8,而操作系统的控制台 (cmd 或者 powershell)使用的是GBK。

集成开发环境编码集:

image

控制台开发环境编码集:

可使用 chcp 命令查看控制台代码页查看控制台的活动代码页

image

用GBK的编码集去解释UTF-8的字符就会出现乱码的问题

踩坑过程

  网上有很多教程,关于如何解决乱码问题,但是很多都缺少解释,没有说清楚设置的原因。有时候会出现设置了不生效,或者vscode中输出中文正常,但是

在操作系统中拉起的控制台乱码的情况。那么原因是什么呢?

  首先windows系统上的控制台有两个,一个是比较原始的cmd,另一个是比较新且功能更强大的 powershell。另外就是vscode中可以自己选择使用 cmd 还是 powershell

很多教程没有说清楚这一点,就导致了可能vscode默认使用 cmd 控制台,但是我们只配置了 powershell ,或者是vscode拉起 powershell 但是拉起的是 cmd 。甚至有时候

在vscode中输出是正常,但是在操作系统中直接启动的控制台却是乱码。

如何解决

按照上面的解释,可以分为四个层次:临时设置、工程项目级设置、控制台级设置、系统级设置(不推荐)。

方案1:临时设置

  输入chcp 65001 可以将当前的会话设置为 UTF-8。但是如果会话关闭,那么将会失效。可以临时使用,影响最小,但是及其不方便。 

 

 

方案2:项目级设置

  通过配置 .vscode/settings.json 文件,将 chcp 65001作为启动参数传递给控制台,这样就可以做到项目级别的设置,代码如下

{
    "terminal.integrated.profiles.windows": {
        "PowerShell": {
            "source": "PowerShell",
            "icon": "terminal-powershell",
            "args": [
                "-NoExit",
                "chcp 65001"
            ]
        },
        "Command Prompt": {
            "path": [
                "${env:windir}\\System32\\cmd.exe"
            ],
            "args": [
                "/k",
                "chcp 65001"
            ],
            "icon": "terminal-cmd"
        }
    },
    "terminal.integrated.defaultProfile.windows": "PowerShell", // 用来配置使用的终端
}

这种方案也有缺点和优点,缺点就是每次新增一个项目都需要把配置拷贝一份,优点是不会干扰到其他程序

 

 

方案3:控制台设置

  这个方案会比较麻烦,需要修改注册表以及给powershell提供策略,但是兼容性还算可以。并且不需要配置vscode,以后的所有

vscode工程项目都适用

powershell设置

原理是通过配置文件,自动执行切换的动作

  1. 以管理员身份打开powershell (win + R 输入 powershell ,按住 ctrl + shift + 回车)
  2. 输入 New-Item $PROFILE -ItemType File -Force 创建配置文件
  3. 输入 notepad $PROFILE 编辑刚刚创建的配置文件
  4. 在弹出的文本框中粘贴下面的代码并保存
    $OutputEncoding = [Console]::InputEncoding = [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding
    chcp 65001 | Out-Null
  5. 输入 Set-ExecutionPolicy RemoteSigned 修改执行策略,放开权限
  6. 重新打开powershell 使用chcp验证是否为 65001

cmd设置

原理是通过注册表,在运行前自动执行chcp 65001 的动作

  1. 打开注册表 (win + R 输入 Regedit)
  2. 导航到路径 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
  3. 在右侧窗格右键,选择"新建"→"字符串值",命名为 AutoRun
  4. 双击 AutoRun,将数值数据设置为 chcp 65001 > nul
  5. 关闭注册表编辑器,重启 cmd 控制台即可生效

 

 

方案4:直接修改电脑的编码集(不推荐)

通过这种方式,兼容性很差,会导致很多软件乱码,不推荐使用,这里只是提供一种思路

image

posted @ 2025-12-31 16:09  XBGzZ  阅读(11)  评论(0)    收藏  举报