Sublime Text中文输入乱码的根本原因是编辑器未正确处理UTF-8输入流,需在输入前确保以UTF-8模式接收——先执行Reopen with Encoding → UTF-8,关闭“在非Unicode程序中启用Unicode输入”,ST4禁用detect_encoding:true,并设default_encoding_on_save为"UTF-8"。

Sublime Text 里中文输入法打出乱码,不是输入法的问题,而是编辑器没正确处理 UTF-8 编码的输入流——你按下去的是中文,它却用 Latin-1 或 GBK 规则去存,结果字节被错解,显示成“æ–‡”“锟斤拷”或方块。
为什么中文输入后立刻变乱码(不是打开旧文件)
这种现象常见于 Windows 上用搜狗、QQ 输入法,在 Sublime 中直接打字就出乱码,和文件编码无关。根本原因是:Sublime Text 默认不监听系统 UTF-8 输入事件,尤其在 ST4 中,若未启用 Unicode 输入支持,会把多字节 UTF-8 序列当成多个 Latin 字符写入缓冲区。
- 典型表现:输入“你好”,光标后出现
ä½ å¥½或浣 濂?,且无法回删单个汉字,只能整段删 - 不是字体问题:换
Microsoft YaHei或Simsun无效 - 不是插件冲突:禁用所有插件后仍复现,说明是底层输入链路问题
- ST4 Build ≥ 4160 已修复该问题;低于此版本需手动补救
Windows 下必须做的三件事(ST3/ST4 低版本)
这不是配置项能一键解决的,得从输入源头堵住字节错解:
- 在 Sublime 中按
Ctrl+Shift+P打开命令面板,输入Set Syntax: Plain Text并回车——先确保当前视图不是被某语言插件劫持了输入行为 - 关闭所有 IME 候选框干扰:右键任务栏输入法图标 → “设置” → 关闭“在非 Unicode 程序中启用 Unicode 输入”(这项开启反而会让 Sublime 接收错误编码)
- 强制进程使用 UTF-8 模式:对快捷方式属性 → “目标”末尾加空格和
--multiinstance --enable-utf8(ST4 支持,ST3 不识别该参数)
Save with Encoding 不能救输入乱码
很多人输完一堆 ä½ å¥½ 后点 Save with Encoding → UTF-8,发现保存后还是乱码——因为此时内存里存的已经是错解后的 Latin 字节,再以 UTF-8 写出,等于把错误固化。真正要做的,是在乱码发生前拦截:
- 输第一个字就发现不对,立刻
Ctrl+Z回退,然后执行File → Reopen with Encoding → UTF-8(注意不是 GBK),再试输入 - 如果已满屏
æ–‡,不要保存,直接关掉文件(不点保存),重新用File → Open,并在打开对话框右下角点编码选择器 → 选UTF-8再打开空白文件重输 -
ConvertToUTF8插件对输入乱码无效:它只管文件读取/保存,不接管实时输入事件
ST4 用户请检查是否开了 detect_encoding
ST4 中 detect_encoding: true 会导致编辑器在新建文件时主动跳过 UTF-8 输入协商,直接用系统默认 ANSI 页(如 CP936)接收键盘事件,这是输入乱码最隐蔽的根源:
- 打开
Preferences → Settings – User - 确认配置里**没有**
"detect_encoding": true这一行;如有,删掉 - 也别写
"fallback_encoding"—— ST4 已彻底移除该字段,写了也不生效 - 真正控制新建文件行为的是:
"default_encoding_on_save": "UTF-8"和"save_with_bom": false
输入乱码的本质是字节流在进入编辑器内存前就被截断或误译,不是显示或保存环节的问题。修复关键在于让 Sublime 在按键按下瞬间就以 UTF-8 模式接收,而不是事后补救。Windows 上尤其要注意输入法设置与 Sublime 启动参数的配合,漏掉任意一环,都会让“你好”变成不可逆的 ä½ å¥½。











