必须先用Reopen with Encoding验证真实编码(如GBK),再Save with Encoding→utf8转码覆写,否则会将错解内容固化为UTF-8;files.encoding只影响新建文件,已有文件需禁用autoGuessEncoding并手动指定。

确认真实编码再动手,别直接点 Save with Encoding
乱码文件本身没坏,只是 VSCode 用错编码读取了字节。直接点右下角 → Save with Encoding → utf8,大概率会把当前错解的内容(比如一堆方块或问号)原样存成 UTF-8,反而固化乱码。
必须先验证:点击右下角当前显示的编码(如 UTF-8),选 Reopen with Encoding → 依次试 GBK、GB18030(别用 GB2312,覆盖不全)。文字一恢复,就锁定了原始编码。
-
Reopen with Encoding是只读操作,不改磁盘,可反复试 - 如果点完没反应,先按
Ctrl+S保存一次(哪怕没改),VSCode 才会激活菜单项 - 试完更乱?关掉文件重开,再换一个编码重试,别硬扛
Save with Encoding → utf8 才是真转码
显示正常后,再次点击右下角编码名,选 Save with Encoding → utf8(注意:全小写、无短横、无 BOM)。这一步会把编辑器当前看到的正确内容,以 UTF-8 编码重写进磁盘,字节彻底改变。
- 必须写成
utf8,写成UTF-8或utf8bom会被 VSCode 静默忽略 - 别选
UTF-8 with BOM:Java 编译器虽能忍,但 Maven、IntelliJ 可能报Illegal character;Git diff 里还会冒出\ufeff干扰比对 - 保存后可用命令行验证:
file -i YourFile.java(macOS/Linux)或enca -L zh YourFile.java(Windows)
为什么改了 files.encoding 还是乱码
"files.encoding": "utf8" 在 settings.json 里只影响新建空文件,对已有文件几乎无效。VSCode 会记住你上次打开它时用的编码(比如刚用 GBK 重开过,它就认定“这个文件 = GBK”)。
- 想让已有文件也“听话”,得关掉自动猜测:
"files.autoGuessEncoding": false - 若某个文件死活记不住你选的
utf8,删掉工作区下的.vscode/workspaceStorage文件夹,重启 VSCode 清记忆 - 老项目混 GBK(如 .bat、.reg),别全局硬设
utf8,改用files.associations单独配:"*.bat": "gbk"
终端输出中文还是乱码?那是另一条链路
文件转成 UTF-8 了,但终端里 print("中文") 还是方块——这不是文件编码问题,是 Windows 终端自身代码页和 Python 运行环境不匹配。
- 临时修复:在终端输
chcp 65001切到 UTF-8 页 - 一劳永逸:在
settings.json加:"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"} - 如果用 Java,还需加:
"JAVA_TOOL_OPTIONS": "-Dfile.encoding=UTF-8"
真正清除乱码,关键不是“怎么点菜单”,而是分清哪步只改显示、哪步改磁盘、哪步改运行时环境。三者错位一个,乱码就还在暗处等着你。


















