sublime打开gbk文件显示方块是因默认utf-8解码失败,应右下角切换为chinese (gbk)编码,再保存为utf-8;推荐用codecs37插件自动识别;python构建乱码需配置build system指定utf-8环境变量。

打开GBK文件就显示方块?先别改设置,直接告诉Sublime“你试试GBK”
Sublime 本身不猜编码,它只是按 fallback 顺序硬试——默认用 UTF-8 去解 GBK 字节流,两个字节被当一个 UTF-8 字符,结果就是满屏 □ 或 。这不是渲染问题,是解码错位。
- 打开乱码文件后,**立刻点右下角状态栏的编码名(如
UTF-8)→Reopen with Encoding→Chinese (GBK) - 如果还不对,再试
Chinese (GB2312)或Western (Windows 1252)(旧版记事本无BOM时常见误判) - 一旦中文正常显示,马上执行
File → Save with Encoding → UTF-8——这是真正转码,不是“另存为”,否则乱码会固化
Sublime Text 4.4+ 还在用 ConvertToUTF8?赶紧换 Codecs37
ConvertToUTF8 已多年未维护,在 ST4.4+ 上常失效:状态栏不显示真实编码、自动转码失灵、保存后仍乱码。这不是你配置错了,是插件根本没跑起来。
- 用
Ctrl+Shift+P→ 输入Install Package→ 搜索安装Codecs37 - 装完无需任何配置:打开 GBK 文件自动识别,状态栏显示
GBK,点击即可切换保存编码 - 它支持
GBK/GB18030/UTF-8-BOM/Shift-JIS等 30+ 编码,且持续更新
Python构建输出中文变问号?关键不是改源码编码,而是对齐环境变量
# -*- coding: utf-8 -*- 只影响 Python 怎么读你的源文件,跟控制台输出编码完全无关。乱码根源是:Python 进程默认用系统 locale(Windows 是 gbk)输出,而 Sublime 控制台按 utf-8 解析字节流。
- 菜单 →
Tools → Build System → New Build System…,粘贴以下内容并保存为PythonUTF8.sublime-build:
{
"cmd": ["python", "-u", "$file"],
"selector": "source.python",
"encoding": "utf-8",
"env": {
"PYTHONIOENCODING": "utf-8",
"PYTHONUTF8": "1"
}
}
chcp 的命令(比如 ["cmd", "/c", "chcp 65001 >nul && python -u $file"]),它会让 Windows 终端和 Sublime 解码逻辑打架test_encoding.py,打印 sys.stdout.encoding,必须是 utf-8 才算真对齐Settings–User 里加 fallback_encoding 是捷径还是陷阱?
加 "fallback_encoding": "GBK" 看似一劳永逸,但它会全局污染:一个纯英文日志(实际是 ISO-8859-1)也会被强行用 GBK 解,café 变成 caé。
- 日常开发新项目:设
"default_encoding": "UTF-8"+"fallback_encoding": "UTF-8",强制所有新建/另存走 UTF-8 - 专攻银行/嵌入式日志等 GBK 重灾区:只加
"fallback_encoding": "GBK",但同时加"detect_indentation": false防止缩进识别被干扰 - 绝对不要同时设
default_encoding和fallback_encoding为不同中文编码(如一个GBK一个GB2312),Sublime 不会合并逻辑,只会增加误判
最麻烦的从来不是操作步骤,而是得先确认文件本来是什么编码——尤其混合了 UTF-8-BOM、GBK、ANSI 的老项目里,一个一个试才是常态。










