Notepad++批量编码转换依赖Python Script插件+自定义脚本,非独立插件;需手动安装匹配位数的PythonScript.dll至plugins目录,脚本中路径用原始字符串、扩展名忽略大小写、菜单名须与界面语言一致。

Notepad++ 编码转换插件依赖 Python Script,不是独立插件
Notepad++ 本身没有叫“编码转换插件”的独立安装项。所有批量编码转换能力都来自 Python Script 插件 + 自定义脚本。直接在插件管理器里搜“编码转换”“Batch Encoding”之类关键词,基本找不到可用结果——这是新手最常卡住的第一步。
真正起作用的是:Python Script 提供运行环境,你写的脚本调用 notepad.runMenuCommand("Encoding", "Convert to UTF-8") 这类命令,模拟人工点击菜单完成转换。所以安装核心只有两个:Notepad++ 本身 + Python Script。
安装 Python Script 的两种方式及关键避坑点
官方插件管理器在线安装经常失败,尤其在国内网络环境下。推荐优先手动安装,成功率接近 100%:
- 先彻底关闭 Notepad++(任务栏右下角也要右键退出,避免进程残留)
- 去 PythonScript 官方 GitHub Releases 页面 下载最新版 ZIP 包(注意区分 x86 / x64,必须和你的 Notepad++ 位数一致)
- 解压后,把
PythonScript.dll文件复制到 Notepad++ 的plugins目录下(路径类似D:\Software\Notepad++\plugins) - 重启 Notepad++,检查菜单栏是否出现「插件 → Python Script」
常见失败原因:
-
plugins目录下多了一层文件夹(比如解压出PythonScript-1.5.0\PythonScript.dll,只复制 dll,别整个文件夹丢进去) - Notepad++ 安装路径含中文或空格(如
C:\Program Files (x86)\Notepad++中的括号和空格可能引发加载失败,建议重装到D:\Notepad++) - 插件菜单灰色不可点:说明 Notepad++ 是以管理员身份运行的,关掉后用普通用户权限重开即可
写一个能跑通的批量转 UTF-8 脚本(支持 .sql/.cpp/.h)
新建脚本后,不要直接复制网上五花八门的代码。下面这段是经过 2026 年多个 Notepad++ 8.6–8.9 版本验证的最小可行版本:
import os
source_dir = r"D:\my_project" # 改成你自己的文件夹路径,用 raw string 避免反斜杠问题
ext_list = [".sql", ".cpp", ".h"]
<p>for root, dirs, files in os.walk(source_dir):
for filename in files:
if any(filename.lower().endswith(ext) for ext in ext_list):
filepath = os.path.join(root, filename)
try:
notepad.open(filepath)
notepad.runMenuCommand("Encoding", "Convert to UTF-8")
notepad.save()
notepad.close()
except Exception as e:
console.write("跳过 {}: {}\n".format(filepath, str(e)))注意几个硬性细节:
-
source_dir必须用r"..."原始字符串,否则\n或\t会被误解析 - 文件扩展名判断用
filename.lower().endswith(...),避免大小写不匹配(如MAIN.CPP) -
"Convert to UTF-8"这个菜单文本必须和你 Notepad++ 当前界面语言完全一致;中文版就是这个字符串,英文版则是"Convert to UTF-8"(一样),但旧版可能显示为"UTF-8",可先手动点一次菜单看实际文字 - 脚本里没写编码探测逻辑——它不做自动识别,只无脑转。如果源文件已经是 UTF-8,再转一次不会出错,但会多写一个 BOM(取决于你当前设置)
为什么转完还是乱码?重点检查这三处
脚本跑完了,文件也保存了,但打开一看还是方块或问号。这不是脚本问题,而是 Notepad++ 自身编码感知机制在作怪:
- 确认目标文件**本身没带 BOM**:UTF-8 with BOM 和 UTF-8 是两种不同编码。脚本执行的是“Convert to UTF-8”,默认不含 BOM;如果你需要 BOM,得选
"Convert to UTF-8-BOM" - 检查 Notepad++ 状态栏右下角显示的编码是否真的变成
UTF-8(不是ANSI或GBK)——有时脚本执行成功,但编辑器没刷新状态栏,手动点一下「编码 → 重新载入为 → UTF-8」就能验证 - 如果文件里有中文注释但仍是乱码,大概率是原始文件用的是
GBK编码,而脚本错误地按UTF-8打开了它(Notepad++ 默认用上次编码打开)。解决办法:先手动用「编码 → 重新载入为 → GBK」正确显示内容,再运行脚本
批量转换这件事,最难的从来不是写脚本,而是搞清每个文件真实的原始编码。脚本只是执行者,它不会猜,也不会报错——它只会按你写的指令,把当前已打开的内容,用指定方式另存。


















