VS Code 中文乱码主因是编码配置错误:文件实际为 GBK 而 VS Code 按 UTF-8 解码导致方块;应右下角切换编码重开/保存,新项目可设 "files.encoding": "utf8",老项目需按文件类型单独配置,终端乱码需调整 shell 编码,Git 乱码需配置 core.quotepath 和 i18n.commitencoding。

VS Code 打开文件显示方块或问号,file.encoding 没设对
中文乱码最常见原因:VS Code 默认用 utf8 解码,但有些文件(尤其 Windows 上用记事本保存的)实际是 gbk 或 gb2312 编码。VS Code 不会自动猜,它只按你配置的编码读——配错就全成方块。
实操建议:
- 右下角状态栏点击当前编码(如
UTF-8),选Reopen with Encoding→GBK,立刻验证是否恢复; - 确认后点同位置 →
Save with Encoding→UTF-8,把文件转成通用编码,一劳永逸; - 不想每次手动?在
settings.json加这行:"files.encoding": "utf8"(仅推荐新项目);老项目混 GBK,别全局硬设,否则打开 .txt 就崩。
新建文件默认编码是 utf8,但粘贴中文后保存变乱码
这不是解码问题,是写入时编码不匹配。典型场景:从微信/网页复制中文,粘进一个刚新建的空 .py 文件,Ctrl+S 保存后打开就是乱码——因为 VS Code 新建文件虽标 UTF-8,但若系统区域设为中文(中国),部分底层调用仍走 GBK 路径写入。
实操建议:
- 新建文件后,先手动点右下角编码 →
Save with Encoding→UTF-8,再粘贴、再保存; - 永久解决:在
settings.json加两行:"files.autoGuessEncoding": false(关掉玄学猜测),"files.encoding": "utf8"(强制新建即 UTF-8); - 注意:如果项目里有遗留
.bat或.reg文件,它们依赖GBK,全局设死utf8反而执行报错——得靠files.associations单独配。
终端(Integrated Terminal)里 print("中文") 输出乱码
这是 shell 层面的编码问题,和编辑器无关。Windows 的 cmd 和 Powershell 默认用 GBK,但 Python 解释器按 UTF-8 输出,两边对不上,字就糊了。
实操建议:
- 临时修复:在终端输
chcp 65001(切换到 UTF-8 页),再跑 Python; - 一劳永逸:在 VS Code 设置里搜
terminal.integrated.defaultProfile.windows,把它改成Windows PowerShell(比 cmd 稳),再在settings.json加:"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"}; - 如果用 WSL,别碰 Windows 终端设置,直接进 Linux 子系统改
locale,VS Code 终端会自动继承。
Git 提交日志、diff 中文显示为 \u4f60\u597d
这是 Git 自身的编码限制。Git 默认把 commit message 当 ASCII 处理,遇到中文就转义成 Unicode 码点。不是 VS Code 的锅,但你在它的 Source Control 面板里看得难受。
实操建议:
- 提交前,在终端执行:
git config --global core.quotepath false(关掉路径转义); - 再执行:
git config --global i18n.commitencoding utf-8(告诉 Git commit 用 UTF-8); - 旧 commit 日志已乱码?无法回滚,但新 commit 会正常。diff 里中文路径乱码,同样靠
core.quotepath false解决。
插件(如 Chinese (Simplified) Language Pack)装了反而更乱
语言包只翻译界面,不干预文件编码逻辑。但新手常误以为“装了中文包 = 中文友好”,结果发现打开 .md 文件还是方块——其实和插件完全无关,纯属编码配置没动。
实操建议:
- 卸载语言包不影响任何编码行为,放心删;
- 真正该装的是
EditorConfig for VS Code插件,配合项目根目录的.editorconfig文件,统一规定charset = utf-8,团队协作时比手动设settings.json可靠得多; - 如果用了 Prettier 或 ESLint,检查它们的配置是否含
encoding相关字段——多数现代格式化工具根本不碰编码,但个别老版本会强行覆盖。
最麻烦的情况其实是混合编码:一个项目里 Python 文件用 UTF-8,SQL 脚本是 GBK,Excel 导出的 CSV 是 ANSI。这时候不能靠单一设置,得学会看右下角编码标识、善用 Reopen with Encoding 快速切换,而不是指望一次配置搞定所有文件。


















