VSCode中文乱码问题_文件或终端显示乱码修复

20次阅读

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

VSCode中文乱码问题_文件或终端显示乱码修复

VSCode 打开文件显示中文乱码

根本原因是文件编码未被正确识别,VSCode 默认按 UTF-8 解码,但若文件实际是 GBK、GB2312 或 GB18030 编码(常见于 windows 旧项目、某些爬虫导出 csv、国产软件生成的文本),就会显示为 或方块符号。

修复方式不是“改设置”,而是让 VSCode 正确读取当前文件的真实编码:

  • 右下角状态栏点击当前编码标识(如 UTF-8
  • 选择 Reopen with Encoding → 再选 GBK(或 GB18030GB2312 兼容性较差,不推荐)
  • 确认后内容立即恢复正常;若仍乱码,可尝试切换其他中文编码反复测试
  • 若需永久保存为 UTF-8,再点右下角编码 → Save with EncodingUTF-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+,且终端字体必须支持中文,如 ConsolasJetBrains Mono
  • WSL / linux 子系统:检查 locale 输出,确保 LANGzh_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 中中文显示为八进制转义(344273245347261273)

这不是 VSCode 的锅,而是 Git 本身在非 UTF-8 环境下对路径/提交信息做了转义保护。常见于 Windows Git Bash 或旧版 Git 配置。

  • 检查 Git 配置:git config --get i18n.commitencodinggit 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 临时查看。

text=ZqhQzanResources