VSCode终端中文乱码主因是Windows默认代码页936(GBK)与UTF-8输出不匹配,需在settings.json中配置PowerShell启动时执行chcp 65001,并设为默认终端,重启后生效。

VSCode 本身不“报错”中文输出日志——所谓“报错”,其实是终端或输出面板显示乱码、字符被替换成、方框或问号,本质是编码链路断裂,不是语法错误或运行时异常。
为什么 terminal 输出中文会变
Windows 下 VSCode 集成终端(CMD/PowerShell)默认代码页是 936(GBK),而 VSCode 内部、文件保存、编译器参数普遍按 UTF-8 处理。当程序输出 UTF-8 编码的中文,终端却用 GBK 解码,必然错位。
- 执行
chcp查看当前代码页:若输出活动代码页: 936,就坐实了这个冲突 - Python 脚本里
print("你好")正常,但终端显示,不是代码问题,是终端解码失败 - 即使改了
files.encoding或保存为 UTF-8,也不影响终端本身的解码逻辑
让 PowerShell 终端原生支持 UTF-8 输出
这是最干净、一劳永逸的方案,无需改代码、不依赖插件,直接对齐现代开发标准。
- 打开
.vscode/settings.json(工作区级)或用户 settings(全局级) - 添加或修改以下配置:
{
"terminal.integrated.profiles.windows": {
"PowerShell (UTF-8)": {
"source": "PowerShell",
"args": ["-NoExit", "-Command", "chcp 65001 | Out-Null"]
}
},
"terminal.integrated.defaultProfile.windows": "PowerShell (UTF-8)"
}
-
chcp 65001必须在终端启动时立刻执行,不能靠脚本延迟调用 - 不要只改
defaultProfile却漏掉profiles定义,否则配置无效 - 改完后需关闭所有终端 tab,再新建一个,旧终端不会自动刷新代码页
Java/C++ 等编译型语言输出中文乱码怎么办
这类问题和终端无关,是编译器/运行时环境默认编码未设为 UTF-8 导致的。VSCode 界面语言设成中文,对它们零影响。
- Java:必须在
tasks.json的args中显式加"-encoding","UTF-8";或设系统环境变量JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" - C++(MinGW/MSVC):确保源文件以 UTF-8 无 BOM 保存,并在编译命令中加
-finput-charset=UTF-8 -fexec-charset=UTF-8(GCC)或/utf-8(MSVC) - Node.js:启动时加
node --icu-data-dir=...不必要;只需保证终端是 UTF-8,且process.stdout.write()输出的是合法 UTF-8 字节流
别踩这些坑
很多人试了一圈还是乱码,往往卡在几个隐蔽环节:
- 误以为装了中文语言包就能解决所有中文显示问题——语言包只管 UI,不管终端、文件、编译器
- 在
settings.json里同时写了"files.encoding": "gbk"和终端 UTF-8 配置,造成文件读写与终端显示双重混乱 - 改了终端配置却没关掉已打开的终端窗口,新配置只对新建终端生效
- 远程开发(SSH/WSL)时,只配了本地 VSCode,忘了在远程 shell 的
~/.bashrc或~/.zshrc里加export LANG=zh_CN.UTF-8
真正关键的不是“怎么让 VSCode 显示中文”,而是让整个工具链(编辑器 → 编译器 → 运行时 → 终端)在 UTF-8 上对齐。少一个环节,中文就断在哪儿。











