Sublime Text 显示中文问号是因编码识别失败而非乱码,根源在于无BOM的UTF-8文件常被误判为GBK;应配置"default_encoding"和"fallback_encoding"均为"UTF-8",并手动重载已打开文件。

Sublime Text 打开文件显示中文问号,本质是编码识别失败,不是乱码修复问题——它压根没用 UTF-8 读,而是按系统默认编码(如 GBK)试读失败后 fallback 成 。
为什么 Sublime 默认不优先用 UTF-8?
Sublime Text 启动时会根据文件 BOM、内容特征、历史打开记录推测编码,但对无 BOM 的简体中文文本(尤其是纯 ASCII + 中文混合),常误判为 Chinese (GBK) 或 Western (ISO 8859-1)。一旦误判,就无法正确解析 UTF-8 字节序列,直接显示问号或方块。
- 没有 BOM 的 UTF-8 文件最容易被误判
- Windows 系统区域设置为中文时,Sublime 更倾向尝试 GBK
- 已缓存的错误编码会被记住,下次打开仍沿用
强制所有文件用 UTF-8 打开(全局生效)
修改用户配置,让 Sublime 在无明确线索时默认使用 UTF-8,而非依赖系统猜测:
{
"default_encoding": "UTF-8",
"fallback_encoding": "UTF-8"
}
注意:default_encoding 控制新建文件和无 BOM 文件的初始读取编码;fallback_encoding 是当所有自动检测都失败后的兜底方案。两者都设为 UTF-8 才真正“强制”。
- 配置路径:
Preferences → Settings – User - 改完保存,无需重启,新打开的文件立即生效
- 已打开的乱码文件需手动重新加载:右键 →
Reopen with Encoding → UTF-8
单个文件临时修复(无权限改配置时)
遇到一个文件打不开中文,又不想动全局设置,用快捷方式快速重载:
- Windows/Linux:
Ctrl+Shift+P→ 输入Reopen with Encoding→ 回车 → 选UTF-8 -
macOS:
Cmd+Shift+P同上 - 如果已显示问号,先别编辑,先重载,否则保存会把问号写死成乱码
重载后若仍错,说明文件本身不是 UTF-8 编码——此时应选真实编码(如 Chinese (GBK)),再另存为 UTF-8。
保存时确保写入 UTF-8(避免二次乱码)
只读取用 UTF-8 不够,保存也得走 UTF-8,否则协作或 Git 提交时会出问题:
{
"default_encoding": "UTF-8",
"fallback_encoding": "UTF-8",
"save_on_focus_lost": true,
"ensure_newline_at_eof_on_save": true,
"trim_trailing_white_space_on_save": true
}
save_on_focus_lost 不是必须项,但它能减少忘记 Ctrl+S 导致的编码丢失风险。关键点是:只要 default_encoding 和 fallback_encoding 都是 UTF-8,保存时 Sublime 就会以 UTF-8 写入(除非你手动选了别的编码保存)。
真正容易被忽略的是:某些老旧项目里混着 GBK 编码的文件,强行用 UTF-8 读会显示错乱——这时不能全局一刀切,得在对应文件上右键 → Set File Encoding → Chinese (GBK) 单独处理。编码策略得看文件来源,不是越“统一”越好。










