新建文件中文乱码、语法高亮失效的根本原因是sublime默认用系统gbk编码创建新文件,而语法解析器只支持utf-8;必须将default_encoding设为"utf-8",并配置save_with_bom:false和default_encoding_on_save:"utf-8"。

新建文件打中文就乱码、语法高亮失效,根本不是编码“设低了”,而是 Sublime 拿系统 locale(Windows 上常是 GBK)创建了新文件,但语法解析器(如 Python、JavaScript)只认 UTF-8 编码的源文件 —— 它一读到非 UTF-8 字节流,直接放弃解析,高亮、跳转、LSP 全挂。
新建文件右下角显示 GBK 或空白,一输中文就变方块
这说明 Sublime 创建新文件时用了系统默认编码(简体中文 Windows 是 CP936/GBK),而非语法要求的 UTF-8。它和“打开旧文件乱码”是两回事,不能靠 Reopen with Encoding 补救 —— 新建文件还没存盘,没磁盘内容可重读。
- 立刻检查右下角状态栏:如果显示
Chinese (GBK)、Western (Windows 1252)或为空,就是问题源头 - 不要点状态栏选
UTF-8:这只是临时重解析内存,不改新建行为,下次新建还是 GBK - 必须修改用户配置里的
default_encoding,且值必须是"UTF-8"(双引号、大小写严格) - ST4 中
default_encoding已被标记为“已弃用”,但它仍控制新建空文件的初始编码和Save with Encoding弹窗默认项 —— 对新建文件场景,它依然有效
改完 default_encoding 还是乱码?检查 save_with_bom 和 default_encoding_on_save
即使新建文件显示为 UTF-8,保存后别人或 Git/Python 报错,大概率是你保存时实际落盘的是 UTF-8 with BOM,而工具链拒绝带 BOM 的 UTF-8。
-
"save_with_bom": false必须显式加进用户设置,否则 Sublime 默认在 Windows 上保存带 BOM -
"default_encoding_on_save": "UTF-8"才真正决定 Ctrl+S 时写入磁盘的编码;仅靠default_encoding不够稳 - 别写
"UTF8"或"utf-8"—— Sublime 只认"UTF-8"(短横、大写) - 删掉配置里任何
detect_encoding相关项:它会干扰新建逻辑,尤其在 ST4+ 上容易导致新建文件编码不稳定
语法高亮/括号匹配/跳转仍不工作?确认文件扩展名和语法绑定没被破坏
编码设对了,但 .py 文件不识别 Python 语法,或中文注释里括号不配对,常见于以下情况:
- 新建文件没加后缀(如
untitled),Sublime 不自动绑定语法 —— 点右下角 →Set Syntax → Python手动指定 - 文件已保存但扩展名不对(如
test.txt),即使内容是 Python 代码,也不会触发 Python 语法高亮 - 装了 ConvertToUTF8 插件却开了
convert_on_save: true:它会在保存时静默还原原始编码(比如 GBK),导致刚设好的 UTF-8 又被覆盖 - 字体不支持中文符号(如括号、冒号):在用户设置中加
"font_face": "Microsoft YaHei, Consolas",确保中西文都能渲染
最易被忽略的一点:Sublime 的语法解析器(如 Python.sublime-syntax)在读取文件时,会先检查 BOM 和前几行字节;如果文件开头是 GBK 字节但状态栏显示 UTF-8,它会直接拒绝加载语法定义 —— 此时你看到的不是“高亮失效”,而是“完全没语法支持”。所以,新建即乱码不是界面问题,是底层解析链的第一环就断了。











