sublime text 本身不支持批量 base64/url/unicode 编解码,必须依赖插件;python 控制台因类型错配、无选区替换、不校验输入等缺陷极易失败,sublimestringencode 是唯一稳定支持三线批量、多光标、自动 utf-8 处理及错误提示的插件。

Sublime Text 本身不支持批量 Base64/URL/Unicode 编解码,必须靠插件驱动;直接用控制台硬写 base64.b64encode() 或 urllib.parse.quote() 极易因字节/字符串类型错配、编码隐式 fallback、换行符残留导致结果不可用——尤其在处理多光标、含中文或嵌入资源的场景下,失败率远高于成功率。
为什么不能用 Python 控制台做批量转码
控制台不是编辑器工作流的一部分:它无法自动替换选区,输出需手动复制粘贴;更关键的是,它对输入源完全不校验。比如你 Ctrl+C 复制一段带 BOM 的 JSON 片段,base64.b64encode() 会把 BOM 一起编码,解码后仍带 \ufeff;又比如 urllib.parse.quote("你好") 在 Sublime 内置 Python 中若 locale 不是 UTF-8,会直接抛 UnicodeEncodeError。
-
base64.b64encode()要求输入是bytes,但你 Ctrl+V 进去的文本默认是str,漏写.encode('utf-8')就报TypeError: a bytes-like object is required -
urllib.parse.quote()默认只处理 ASCII,中文必须显式传safe=''和encoding='utf-8',否则静默失败 - 控制台输出含
b'xxx'前缀和引号,得手动删,一不留神就多删了有效字符 - 无法多光标同步操作:5 处 URL 同时要 encode,你得执行 5 次、复制 5 次、粘贴 5 次
SublimeStringEncode 是唯一能稳住 Base64 + Unicode + URL 三线批量的插件
它不是“支持多种编码”的泛用插件,而是为每种场景单独封装了安全路径:string_encode 命令通过 args.type 区分行为,内部已固化 .encode('utf-8') → 转码 → .decode('utf-8') 链路,且对非法输入有明确弹窗提示(不是空白或乱码)。
- Base64:命令
StringEncode: Base64 Encode,自动 strip 两端空白,拒绝含非 Base64 字符(如空格、换行)的输入 - URL 编码:用
StringEncode: URL Encode,等价于urllib.parse.quote(s, safe='', encoding='utf-8'),中文直接转%E4%BD%A0%E5%A5%BD - Unicode 编码:
StringEncode: Unicode Escape输出\u4f60\u597d,StringEncode: Unicode Unescape可逆还原 - 所有操作都支持多光标:Ctrl+Click 选中 8 处 API key,一次命令全 encode,无遗漏、无错位
批量处理前必须做的三件事
插件再稳,也救不了脏输入。以下步骤跳过任意一条,后续解码基本会失败:
- 关掉
View → Word Wrap:自动换行会让Ctrl+Click选区断在中间,导致 Base64 字符串被截断 - 开启
View → Show White Space:确认选中区域不含隐藏\r\n或末尾空格——URL 编码里一个多余空格会变成%20,Base64 里一个换行会多出Cg== - 对齐 MIME 类型与内容:比如你要 Base64 编码一张 PNG,先用系统命令生成干净字符串:
base64 -i logo.png | tr -d '\n',再粘贴进 Sublime;别直接拖图进编辑器,那只是二进制乱码,插件无法识别
快捷键绑定和前端落地避坑
命令面板输关键词太慢,但快捷键配置容易写错。重点看这三点:
- 命令名固定是
string_encode,不是base64_encode或url_encode——这是插件统一入口,靠args.type区分 - Windows/Linux 绑定
ctrl+alt+b编码,ctrl+alt+shift+b解码;Mac 用户把ctrl换成super(即 ⌘),别混用 - 前端要用
atob()或btoa()时,插件输出的 Base64 默认带换行和等号填充,必须额外执行Ctrl+H→ 查找[\r\n]+→ 替换为空,否则直接报InvalidCharacterError
真正卡住人的从来不是“怎么转”,而是转完之后要不要去换行、要不要 URL-safe、原始字符串里有没有不可见控制字符——这些细节不提前清理,后面调试时花十分钟定位,不如开头花三十秒检查白空格。











