VS Code Windows 终端中文乱码终极解决方案

1. 问题背景

在 Windows 环境下使用 VS Code 开发 时,终端经常会出现中文乱码问题。

  • 现象:程序输出的中文字符显示为乱码、方块或问号。
  • 原因
    • Windows PowerShell/CMD 默认编码为 GBK (代码页 936)。
    • VS Code 及现代编程语言默认输出 UTF-8 (代码页 65001)。
    • 两者编码不一致导致“鸡同鸭讲”。

2. 解决方案

我们将修改 VS Code 的配置文件,强制 PowerShell 在启动时自动将编码切换为 UTF-8。

步骤一:打开配置文件

  1. 打开 VS Code。
  2. 使用快捷键 Ctrl + Shift + P 打开命令面板。
  3. 输入 Preferences: Open Settings (JSON) 并选择 “首选项: 打开设置 (JSON)”

    关键点:请确保打开的是 用户设置 (User Settings),而不是 工作区设置 (Workspace Settings)。这样配置后,以后打开任何项目都会自动修复中文乱码问题。

步骤二:添加配置代码

在打开的 settings.json 文件的大括号 { ... } 中,添加(或替换)以下配置代码:

注意:如果文件中已有其他配置,请确保在上一个配置项末尾加上逗号 , 以保持 JSON 语法正确。

1
2
3
4
5
6
7
8
9
10
11
// 配置 Windows 终端配置列表
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell",
// 核心魔法:启动时强制执行 chcp 65001 且不退出
"args": ["-NoExit", "/c", "chcp 65001"]
}
},
// 将 PowerShell 设为 Windows 下的默认终端
"terminal.integrated.defaultProfile.windows": "PowerShell"

步骤三:保存并重启

  1. Ctrl + S 保存文件。
  2. 彻底关闭 VS Code 并重新打开。
  3. 点击顶部菜单 终端 (Terminal) -> 新建终端 (New Terminal)

3. 验证是否成功

在新的终端窗口中,输入以下命令并回车:

1
chcp
  • 成功:如果输出 Active code page: 65001,说明终端已成功切换为 UTF-8 模式,中文乱码问题解决。
  • 失败:如果输出 936,请检查代码是否填写正确,或是否重启了 VS Code。

4. 原理解析 (为什么这样做有效?)

这段配置的核心在于 "args" 参数:

  • /c: 告诉 PowerShell 执行后面紧跟的命令。
  • chcp 65001: 这是 Windows 切换编码页到 UTF-8 的命令。
  • -NoExit: 关键参数。执行完 chcp 命令后,不要关闭窗口,而是停留在当前 Shell 中供用户继续操作。如果不加这个参数,终端窗口会在切换编码后瞬间关闭。