右下角显示“utf-8”但插件弹窗/输出中文为方块,本质是插件绕过主编码路径,依赖node.js子进程或ipc通信,需在settings.json中配置"terminal.integrated.env.windows"注入node_options和pythonioencoding,并确保日志文件save with encoding→utf8(无bom)。

右下角编码显示“UTF-8”,但插件弹窗/输出里中文是方块
这不是插件读错了,是它压根没走 VSCode 主编辑器的编码路径。比如 Code Runner、Python、C/C++ 插件调用 Node.js 子进程或调试通道时,会绕过 files.encoding,直接依赖系统 locale 或终端环境变量。
Windows 上 Node 默认不启用 UTF-8 模式,即使你设了 chcp 65001,子进程仍可能 fallback 到 cp1252;Debug Console 和 Output 面板也不读 terminal.* 配置,它们走的是 VSCode 内部 IPC,底层靠 process.stdout 编码感知。
解决方法是在 settings.json 中强制注入环境变量:
"terminal.integrated.env.windows": {
"NODE_OPTIONS": "--experimental-strip-bom --no-warnings",
"PYTHONIOENCODING": "utf8"
}
如果 C/C++ IntelliSense 日志也乱码,还要加:C_Cpp.loggingLevel 设为 "Debug",并确认日志文件本身用 Save with Encoding → utf8 覆写。
插件配置项(如 code-runner.executorMap)里中文路径变问号
这本质是 shell 在解析命令行参数时的编码污染:VSCode 把含中文的路径变量(如 $dir)按当前代码页传给 cmd/PowerShell,而后者默认不是 UTF-8,导致 gcc、python 等找不到文件。
不要在 executorMap 里硬写中文字符串(如 "echo 你好"),更别指望插件自动转码——它只是原样拼接字符串后丢给 shell。
正确做法是让 shell 在执行前就切到 UTF-8:
"c": "chcp 65001 >nul && cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"- PowerShell 更稳:
"c": "powershell -Command \"chcp 65001; cd '$dir'; ...\""(注意单引号防转义) - 确保保存该 JSON 文件时用的是
utf8(全小写、无 BOM)
插件批量转码后部分文件仍乱码
这类插件(如 Change Encoding、Encode Decode)根本不会识别混合编码,尤其当项目里混有 .bat、.reg、.ini 这类 Windows 原生依赖 GBK 的文件时,批量 Save as UTF-8 会导致命令行直接执行失败。
别对整个工作区无差别转换。真实流程是:
- 先点右下角编码名 →
Reopen with Encoding,优先试GBK、GB2312、UTF-8 with BOM - 确认显示正常后,再点同位置 →
Save with Encoding→utf8(注意全小写、无短横、无 BOM)覆写 - 老项目建议按文件类型隔离:在
settings.json中用files.associations单独配,例如:"[bat]": {"files.encoding": "gbk"}
插件语言包不显示中文选项,或 Git 提交信息全是 ???
语言包加载失败、Git 提交乱码,表面是插件问题,实际是编码链断裂:VSCode 启动时没完成语言包初始化,或 Git 在 Windows 下默认禁用了 UTF-8 路径支持。
查 %APPDATA%\Code\logs\main.log,搜 languagePack,若出现 Failed to load language pack,大概率是插件下载不全——删掉 %USERPROFILE%\.vscode\extensions\ms-ceintl.vscode-language-pack-zh-hans-* 后重装。
Git 提交后中文路径显示成 \344\270\255\346\226\207,运行:git config --global core.quotepath false 关闭路径转义即可。
这些都不是插件能修的——插件只是暴露了你没配好的那一环。











