Notepad++不能直接转换编码,必须先以正确编码(如GB18030)重新解释字节使文字可读,再执行“转为UTF-8无BOM”并立即Ctrl+S保存,否则会将乱码固化;右下角编码仅为猜测,非真实编码。

Notepad++ 不能直接“转换编码”,它只做两件事:按指定编码重新解释字节,或把当前内存内容按新编码写回磁盘。乱码的根本原因永远是“当前显示的内容已经错了”,而不是菜单点得不够多。
为什么点「转为 UTF-8」后反而更乱?
因为 转为 UTF-8 不会识别原始编码,它只是把当前内存里已解码的文本(可能已是错解的乱码)再用 UTF-8 编码写进文件。比如原始是 GBK,但 Notepad++ 错当成 ANSI 显示,你再点 转为 UTF-8,结果就是“乱码 × UTF-8”。
- 右下角状态栏显示的编码名(如
ANSI)只是 Notepad++ 的猜测,不是文件真实编码 - 如果文字还没可读,就点
转为 UTF-8,等于把错误固化 -
另存为 → 编码选 UTF-8只改文件标签,不重编码,磁盘字节仍是原样
单个文件必须分两步走:先“看对”,再“转对”
核心是让文字先正确显示出来,再动手转换。
- 点击菜单
编码 → 字符集 → 中文 → GB18030(优先试这个,兼容 GBK/GB2312) - 若中文立刻清晰、标点正常,说明原始就是 GB18030 或 GBK;若仍乱,退回并换
GBK或GB2312 - 确认显示无误后,右下角应显示
GBK或ANSI(Windows 下常指 GBK),不能是UTF-8 - 此时再点
编码 → 转为 UTF-8 无 BOM,然后立刻按Ctrl+S保存
批量转换别信插件,用 nkf 或 iconv 才靠谱
Notepad++ 没有真正批量转编码的能力。所谓“全选多个标签页→统一转”,实际只是串行操作,漏保存、切错页、编码混杂都会导致部分文件没转或转坏。
- 推荐用
nkf -w --overwrite *.txt(-w= UTF-8 without BOM,--overwrite直接覆盖) - 若不确定原始编码,先抽样用 Notepad++ 确认:打开几个文件 → 用
编码 → 字符集 → 中文试出真实编码 → 再统一跑命令 -
iconv -f GBK -t UTF-8//IGNORE input.txt > output.txt可跳过非法字节,但-f参数必须写对,不能靠猜 - 转换完必须用 Notepad++ 抽查:打开几个新文件,看右下角是否稳定显示
UTF-8,且开头没有EF BB BF(BOM)
设置默认新建和打开行为,减少后续踩坑
很多乱码问题其实在新建第一行时就埋下了——系统 ANSI 默认是 GBK,但现代项目普遍要 UTF-8。
- 菜单
设置 → 首选项 → 新建 → 编码,选UTF-8 无 BOM,勾上应用于打开 ANSI 文件 - 这样新建文件默认 UTF-8;已有 ANSI 文件(即 GBK)打开时,Notepad++ 会先尝试按 UTF-8 解,失败再 fallback 到 ANSI —— 但 fallback 不一定准,所以仍需人工验证
- 该设置不影响已打开的乱码文件,只影响后续新建或未标记的文件
最易被忽略的一点:所有“转为”操作都依赖当前显示是否真实。只要文字还没可读,后面一切点击都是徒劳。宁可多试一次 GB18030,也不要跳过“先看对”这步。


















