vscode中文乱码主因是编码不匹配,须先右下角点编码名选reopen with encoding试gbk验证真实编码,确认显示正常后save with encoding→utf8覆写文件,并设"files.autoguessencoding": false和"files.encoding": "utf8"确保稳定。

右下角状态栏点“UTF-8”切GB2312/GBK再重开
旧项目(尤其是十年前的Java、C#或ASP.NET老系统)里大量文件是Windows记事本保存的,实际编码是GBK或GB2312,但VSCode默认用UTF-8解码,结果就是“鏂囦欢缂栫爜”“锟斤拷”这类字。这不是文件损坏,只是读错了——先别保存,立刻点右下角状态栏的UTF-8,选Reopen with Encoding → GBK,文件内容通常秒变正常。
注意:Reopen with Encoding只是临时切换解码方式,不改磁盘文件;如果确认是GBK,下一步才该转存。
确认后用“Save with Encoding”转成UTF-8
显示正常后,再次点击右下角编码区域,这次选Save with Encoding → UTF-8。这步会把文件内容按UTF-8重新编码写回磁盘,从此在Linux/macOS/现代IDE里打开都不会乱。
- 如果保存后中文又变乱码,说明原始字节已被错误覆盖过(比如之前误按过Ctrl+S),这种已无法恢复
- 某些配置文件(如
.bat、.reg)必须保持GBK,否则Windows执行会失败,这类文件不要转UTF-8 - 转完记得检查Git diff,避免把BOM(
EF BB BF)一起提交,尤其对shell脚本和JSON有影响
老项目别全局设"files.encoding": "utf8"
很多教程说“一劳永逸”就加这行到settings.json,但对混杂GBK的老项目反而坏事:新建.txt或.log可能正常,可一打开老.jsp或.aspx就满屏方块。
更稳妥的做法是按语言或后缀单独配:
"files.associations": {
"*.jsp": "utf8",
"*.java": "utf8",
"*.properties": "gbk",
"*.ini": "gbk"
}
这样既保住了新文件用UTF-8,又让历史配置类文件继续走GBK路径。
终端输出中文还是乱?那是另一套链路
编辑器里文件显示正常,但集成终端跑python main.py打印中文仍是问号或方块——这跟文件编码无关,是终端自身编码问题。
Windows上最直接的解法是:
- 终端里手动执行
chcp 65001(切到UTF-8代码页) - 或者在
settings.json加:"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"} - 如果用WSL,别动Windows终端设置,进子系统改
locale即可
真正容易被忽略的是:文件编码、终端编码、编译器/解释器读取源码时的编码,这三者完全独立。一个地方调对了,不代表另外两个自动好。











