Sublime Text 中文文件名乱码需按系统区别解决:Windows 必须用 -u 参数启动以启用 UTF-8 文件系统接口;macOS/Linux 通常默认正常,但终端 locale 非 UTF-8 时需修正环境变量。

Sublime Text 默认不支持中文文件名显示,本质是它读取目录时用了系统默认编码(Windows 是 GBK,macOS/Linux 是 UTF-8),但内部文件列表渲染逻辑未做编码适配——不是改个设置就能好,得从启动方式或插件层干预。
为什么直接改 default_encoding 没用
很多人在 Preferences.sublime-settings 里加 "default_encoding": "UTF-8" 或 "fallback_encoding": "GBK",但这是控制「文件内容」的解码行为,和「文件系统中文件名的读取与展示」完全无关。Sublime 的侧边栏(Side Bar)走的是原生 OS API 调用路径,不经过该配置。
-
default_encoding只影响你双击打开文件后内容怎么解析 - 乱码出现在侧边栏、
Ctrl+P快速打开列表、右键菜单里——这些都属于「文件名字符串的呈现」环节 - Windows 下最典型:文件名是 UTF-8 写入但 Sublime 用 ANSI(即当前系统 Code Page,如 CP936)去读,结果每个中文变成两个问号或方块
Windows 用户:必须用 UTF-8 启动参数运行
这是目前最稳定、无需插件、不依赖 Python 环境的方案。Sublime 3 / 4 均支持 -u 参数强制启用 UTF-8 文件系统接口。
- 找到 Sublime Text 的可执行文件,比如
C:\Program Files\Sublime Text\subl.exe - 新建快捷方式,在「目标」末尾追加
-u(注意前面有空格):"C:\Program Files\Sublime Text\subl.exe" -u - 以后**务必通过这个快捷方式启动**,直接双击原 exe 或开始菜单启动仍会乱码
- 验证是否生效:新建一个中文名文件(如
测试.md),保存后看侧边栏是否正常显示
macOS/Linux 用户:通常无需操作,但要注意终端启动方式
macOS 和大多数 Linux 发行版默认使用 UTF-8 locale,Sublime 能正确获取文件名。但如果从终端用 subl 命令打开,且终端 locale 不是 UTF-8(比如某些 SSH 环境或旧 Docker 镜像),仍可能乱码。
- 检查当前 locale:
locale | grep UTF,应看到LANG=*.UTF-8 - 若不是,临时修复:
export LANG=en_US.UTF-8,再运行subl . - 永久生效需修改 shell 配置(如
~/.zshrc),添加export LANG=en_US.UTF-8 - 注意:Sublime 自带的命令行工具
subl是 shell script 包装器,它会继承终端环境变量
插件方案(仅作备选,慎用)
社区有 SideBarEnhancements 或 FileDiffs 等插件声称支持中文名,但实际只是绕开原生侧边栏、自己重绘文件树——这会导致性能下降、右键菜单错位、与其它插件冲突,且 Sublime 4 已部分修复底层逻辑,插件反而容易引发新问题。
- 不推荐为解决中文名专门装插件
- 如果已安装并出现乱码,先禁用插件,确认是否是插件自身 bug(比如没处理
os.listdir()返回的 bytes vs str) - 真要用插件,请确保其源码中对
os.listdir()结果做了显式 decode,例如:filename.decode('utf-8')(Python 2)或统一用pathlib.Path(Python 3)
真正关键的点只有一个:Windows 下不用 -u 参数启动,其他所有设置都是白忙;而 macOS/Linux 下乱码,大概率是你终端环境本身就没跑在 UTF-8 上——别急着改 Sublime,先查 locale。










