Notepad++ 无内置Base64编解码功能,需安装MIME Tools等第三方插件;新版需通过Plugins Admin并勾选“Show all plugins”才能找到,且输入须预处理(去空格换行、补全填充、转换URL Safe字符);推荐Python Script插件实现可控编解码,或用浏览器控制台atob/btoa、PowerShell命令应急。

Notepad++ 本身不支持 Base64 编解码,必须装插件
别在菜单里反复找“Base64”选项了——Plugins 下原生就没有这个功能。Notepad++ 定位是轻量文本编辑器,不是编码转换工具。你看到的“MIME Tools”或“Base64 Encode/Decode”全是第三方插件,不是内置能力。
常见错误现象:Plugins → Plugin Manager → Available 搜不到 Base64 相关插件,是因为新版 Notepad++(v8.0+)已停用旧版 Plugin Manager,改用 Plugins Admin;若仍搜不到,需点击右下角 Settings → 勾选 Show all plugins 才能显示 MIME Tools。
- 最稳的选择是
MIME Tools v3.5+(适配 v8.x),安装后菜单出现Plugins → MIME Tools - 旧版
Base64 Encode/Decode插件早已下架,GitHub 仓库归档,不推荐尝试手动下载 DLL - 若公司环境禁用插件安装,直接跳过插件方案,用浏览器控制台或 PowerShell 更可靠
MIME Tools 解码失败?大概率是字符串不“干净”
MIME Tools 对输入极其敏感:它不会自动清理空格、换行、URL Safe 字符或填充缺失。只要选中的文本里混入一个 \r、一个 -、或末尾少一个 =,就静默返回空结果,不报错也不提示。
必须手动预处理选中文本:
- 换行干扰:邮件/JSON 中 Base64 常按 76 字符折行。执行
Edit → Line Operations → Remove Empty Lines,再手动删掉所有\r\n;或用正则\s+替换为空 - URL Safe 变体(含
-和_):先全局替换-→+,_→/ - 填充缺失:Base64 长度必须是 4 的倍数。用正则匹配
={0,2}$,补足至两个=(如SGVsbG8补成SGVsbG8=,SGVsbG补成SGVsbG==)
Python Script 插件:更可控的替代方案
如果你常处理 UTF-8 中文、带 BOM 文件,或需要异常反馈(比如乱码时弹提示),MIME Tools 会直接解出乱码且不提醒。这时推荐用 Python Script 插件写两行脚本,它调用系统 Python,编码逻辑可控。
安装 Python Script v1.5+ 后,新建脚本 base64_decode.py:
import base64
try:
decoded = base64.b64decode(editor.getSelText().encode('utf-8')).decode('utf-8')
editor.replaceSel(decoded)
except UnicodeDecodeError:
notepad.messageBox("解码成功但非UTF-8文本,建议用二进制方式保存", "Warning")
except Exception as e:
notepad.messageBox(f"解码失败: {e}", "Error")
- 关键点:
.encode('utf-8')显式指定编码,避免默认 ASCII 报错 - 它能区分“解码失败”和“解码成功但不是文本”,而 MIME Tools 一律当文本吐出,中文极易变乱码
- 编码脚本只需把
b64decode换成b64encode,再加一层.decode()即可
不用插件的应急方法:快、准、无依赖
临时解一串 Base64,又不能装插件?别开在线网站(有隐私风险),直接用系统自带工具:
- 浏览器控制台(最推荐):
F12→ Console → 粘贴atob("SGVsbG8=")→ 回车,得"Hello";编码用btoa("Hello") - PowerShell(支持中文):复制字符串,粘贴执行
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("SGVsbG8=")) - certutil 是陷阱:它只认文件,不接受管道输入;
echo过来的字符串会被截断或丢换行,实际不可靠
真正容易被忽略的是:所有插件都假设你操作的是纯文本块。如果 Base64 嵌在 HTML/JSON 里,先用正则提取(例如 "data:image/[^"]*?base64,([^"]*)"),再喂给插件——跳过这步,90% 的“解码失败”就源于此。


















