vscode打开.txt、.csv、.html等文档中文乱码,基本是gbk/gb2312文件被utf-8错误解码所致;点击右下角“utf-8”→“reopen with encoding”→选gbk可立即修复,切勿先保存以防覆盖原始中文。

VSCode打开文档文件(如.txt、.csv、.html)中文乱码,基本可以断定是文件实际编码(大概率GBK/GB2312)和VSCode默认按UTF-8解码不匹配——不是文件损坏,也不是VSCode坏了,只是“翻译词典用错了”。
右下角状态栏点击“UTF-8”选“GBK”重新打开
这是最快速、最安全的临时修复方式,适用于单个乱码文件。VSCode右下角显示的UTF-8(或GB2312、GBK等)就是当前解码所用的编码。点击它,选择Reopen with Encoding → GBK(或GB2312),文件立刻变正常。
- ⚠️ 切记:看到乱码时先别按
Ctrl+S保存,否则可能把乱码字节用UTF-8写回磁盘,原始中文就真丢了 - 如果选
GBK后仍乱码,试试GB2312或GBK (with BOM),老Windows记事本导出的文件有时带BOM头 - 这个操作只改内存解码方式,不改动磁盘文件,可放心试错
settings.json里配files.autoGuessEncoding: true
VSCode默认不自动猜编码,靠files.encoding硬指定(默认"utf8")。开启自动猜测后,它会扫描文件字节特征,对纯中文文本、短配置文件这类容易误判的场景更友好。
- 按
Ctrl+Shift+P输入Preferences: Open Settings (JSON)打开settings.json - 加上这行:
"files.autoGuessEncoding": true(注意逗号位置,别破坏JSON结构) - 该设置对新打开的文件生效,但不会“回溯”已打开的乱码文件——得手动重开一次
- 副作用:极少数含特殊二进制内容的文本文件(比如混了非ASCII控制符)可能被误判,但文档类文件基本无影响
批量转存为UTF-8避免反复折腾
如果项目里一堆GBK文档,每次打开都要点右下角,迟早崩溃。直接一次性转成UTF-8,一劳永逸。
- 用
Reopen with Encoding以正确编码(如GBK)打开文件 → 确认中文显示正常 → 再点右下角 → 选Save with Encoding→UTF-8 - 不要跳过“先正确打开”这步:如果文件还是乱码状态就直接存UTF-8,等于把乱码固化
- 批量处理推荐用命令行工具,比如
iconv -f GBK -t UTF-8 input.txt > output.txt,比手动一个一个点快得多 - 转完记得检查Git diff,确保没多出
这类BOM残留(UTF-8 with BOM在某些脚本里会引发问题)
终端输出乱码别跟文件编码混为一谈
如果你在VSCode集成终端里跑python script.py,输出中文是乱码,但文件本身打开正常——这和上面三步完全无关,是终端代码页的问题。
- Windows终端默认用GBK(代码页936),而Python脚本输出的是UTF-8字节流,两者不兼容
- 在
settings.json里加这段,让PowerShell/CMD启动时自动切到UTF-8:
{
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"args": ["-NoExit", "/c", "chcp 65001"]
}
},
"terminal.integrated.defaultProfile.windows": "PowerShell"
}
sys.stdout.reconfigure(encoding='utf-8')(Python 3.7+)真正麻烦的从来不是“怎么修”,而是“修完要不要告诉队友”。一个项目里有人用GBK保存、有人用UTF-8提交,Git diff全是编码变更,协作成本陡增。所以最后一步:把"files.encoding": "utf8"写进团队共享的.vscode/settings.json,并加一行注释说明“所有文本文件必须存为UTF-8无BOM”。











