根本原因是新建文件虽标为UTF-8但实际受系统区域设置干扰以GBK写入;需手动点击右下角UTF-8→Save with Encoding→UTF-8强制生效,并禁用autoGuessEncoding、合理配置files.associations。

新建文件输入中文后保存变乱码,根本原因不是“VSCode坏了”,而是**新建文件虽标为UTF-8,但底层写入时受系统区域设置干扰,实际用了GBK路径落盘**。Windows 中文系统下尤其高发,粘贴微信/网页中文后一保存就成“文件”或方块,就是典型症状。
右下角编码状态栏必须手动点两下
VSCode 新建文件默认显示 UTF-8,但这只是“标签”,不等于写入动作真按 UTF-8 执行。你得主动干预:
- 新建一个空文件(如
test.py),先别粘贴任何内容 - 立刻点击右下角状态栏的
UTF-8→ 选 Save with Encoding → 再选UTF-8 - 这时再粘贴中文、编辑、保存,就不会乱码
这一步强制触发了“以 UTF-8 编码写入磁盘”的真实动作,绕过了系统区域设置的隐式劫持。
settings.json 里关掉 autoGuessEncoding + 强制 files.encoding
files.autoGuessEncoding 是个陷阱:它会让 VSCode 在新建文件后偷偷用 GBK 去“猜”内容,结果刚粘进中文就解错,再保存等于把乱码固化。必须禁用:
{
"files.encoding": "utf8",
"files.autoGuessEncoding": false
}
注意:utf8 要写成小写,不是 UTF-8;这个配置只对新文件生效,不影响已存在的老文件。
别全局设死 utf8,小心 .bat/.reg 文件执行报错
如果你项目里有 .bat、.reg 或某些 Windows 脚本,它们依赖系统默认的 GBK 编码运行。一旦全局设 "files.encoding": "utf8",这些文件被 VSCode 用 UTF-8 保存后,双击执行就会失败(比如注册表导入出错、批处理中文路径识别失败)。
正确做法是用 files.associations 单独指定:
{
"files.associations": {
"*.py": "utf8",
"*.js": "utf8",
"*.json": "utf8",
"*.bat": "gbk",
"*.reg": "gbk"
}
}
终端输出中文乱码和这个不是一回事
你在新建的 .py 里写了 print("你好"),保存没乱码,但终端跑出来还是问号——这跟文件编码完全无关,是 terminal.integrated.env.windows 和系统代码页冲突。要单独配终端,比如加这行:
"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"}
或者在终端里先输 chcp 65001 切到 UTF-8 页。别指望改 files.encoding 能解决终端问题。
真正容易被忽略的是:**新建文件的“UTF-8”标签只是个幻觉,不点右下角保存一次,它就不算数**。很多人卡在这一步,反复删文件重试,其实只要多点一下“Save with Encoding → UTF-8”,问题当场消失。











