VSCode中文乱码主因是文件编码识别错误,需通过右下角“Reopen with Encoding”选择正确编码(如GBK)修复;终端乱码则需调整Shell编码及字体设置。

VSCode 打开文件显示中文乱码
根本原因是文件编码未被正确识别,VSCode 默认按 UTF-8 解码,但若文件实际是 GBK、GB2312 或 GB18030 编码(常见于 Windows 旧项目、某些爬虫导出 CSV、国产软件生成的文本),就会显示为 或方块符号。
修复方式不是“改设置”,而是让 VSCode 正确读取当前文件的真实编码:
- 右下角状态栏点击当前编码标识(如
UTF-8) - 选择
Reopen with Encoding→ 再选GBK(或GB18030;GB2312兼容性较差,不推荐) - 确认后内容立即恢复正常;若仍乱码,可尝试切换其他中文编码反复测试
- 若需永久保存为 UTF-8,再点右下角编码 →
Save with Encoding→UTF-8
注意:Reopen with Encoding 不改变文件本身,只影响本次打开;Save with Encoding 才会真正转码并覆写文件。
VSCode 终端(Integrated Terminal)中文显示为问号或方块
这是终端 shell 自身的编码问题,和编辑器无关。Windows 上默认 PowerShell 或 CMD 使用的是系统本地代码页(如 CP936),而 VSCode 终端默认启用 Unicode 支持,但字体或 locale 配置不匹配时就会乱码。
分场景处理:
- PowerShell:在终端中运行
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'仅影响输出重定向;更彻底的是修改 PowerShell 配置文件,添加[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 - CMD:运行
chcp 65001切换为 UTF-8 代码页(需 Windows 10 1903+,且终端字体必须支持中文,如Consolas或JetBrains Mono) - WSL / Linux 子系统:检查
locale输出,确保LANG含zh_CN.UTF-8;若无,临时执行export LANG=zh_CN.UTF-8,或写入~/.bashrc - 终端字体设置:VSCode 设置里搜
terminal integrated font family,设为支持中文的等宽字体,例如"Fira Code", "Microsoft YaHei", "Monaco"
VSCode 自动识别编码失败,每次打开都要手动切
VSCode 本身不支持全局强制指定某类文件用 GBK 打开,但可通过工作区配置 + 文件关联做有限干预:
- 在项目根目录创建
.vscode/settings.json,加入:
{
"files.encoding": "gbk",
"files.autoGuessEncoding": false
}
files.encoding 是 fallback 编码,仅当 VSCode 完全无法猜测时才使用;files.autoGuessEncoding: false 可避免它瞎猜(有时反而把 GBK 误判成 UTF-8)。
- 对特定后缀统一指定编码(如所有
.txt按 GBK 打开):在用户设置或工作区设置中加
{
"[plaintext]": {
"files.encoding": "gbk"
}
}
注意:[plaintext] 是语言标识符,不是文件扩展名;查语言 ID 可在文件打开时按 Ctrl+Shift+P → 输入 Change Language Mode 查看当前模式名。
Git 提交日志或 diff 中中文显示为八进制转义(\344\273\245\347\261\273)
这不是 VSCode 的锅,而是 Git 本身在非 UTF-8 环境下对路径/提交信息做了转义保护。常见于 Windows Git Bash 或旧版 Git 配置。
- 检查 Git 配置:
git config --get i18n.commitencoding和git config --get i18n.logoutputencoding,应均为utf-8 - 若为空或为
gb2312,执行:
git config --global i18n.commitencoding utf-8 git config --global i18n.logoutputencoding utf-8
- Windows 用户还建议启用 Git 的 UTF-8 支持:
git config --global core.precomposeUnicode true(适用于 macOS 文件名兼容) - VSCode 内置 Git 功能依赖这些配置,改完需重启 VSCode 窗口
真正麻烦的是历史提交——已转义的 commit message 无法自动还原,只能靠人工核对原始日志或用 git log --encoding=utf-8 临时查看。









