Notepad++不支持全角→半角批量转换,因其无内置该功能;需用Python unicodedata.normalize('NFKC', text)等专用工具实现准确转换。

Notepad++ 本身不支持全角→半角批量转换
这不是你操作错了,是软件根本没这个功能。全角字符(如,。ABC)和半角字符(,.ABC)在 Unicode 中是完全不同的码位,比如全角逗号 , 是 U+FF0C,半角逗号 , 是 U+002C。Notepad++ 的「编码转换」菜单(如 Encoding → Convert to UTF-8)只改字节解释方式,不会动字符本身——点再多遍,, 还是 ,。
正则替换只能应急,且必须分批手动映射
如果你只处理少量、明确的全角标点或数字字母,可以用 Search → Replace(Ctrl+H),但得自己列清楚对应关系:
- 勾选「正则表达式」,不要勾选「. matches newline」
- 查找全角标点常用范围:
[\uFF01-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65](不含全角空格\u3000和顿号\u3001) - 替换时不能写成「自动映射」,必须一个个填:把
,替换为,,把。替换为.,把:替换为:…… - 全角数字
0123456789和字母ABC…Zabc…z同理,需手敲半角版本,不能复制粘贴(否则可能带格式或隐藏字符) - 每次替换后务必抽查上下文:比如
OK可能被错替成OK,但血型O型中的O就不该动
真正可靠的做法是绕过 Notepad++
批量、准确、可复现的转换,得交给专门处理 Unicode 规范化的工具:
- Python 最稳:
unicodedata.normalize('NFKC', text)一行搞定,自动处理全角数字/字母/标点/空格,且兼容中文混排场景 - PowerShell(Windows):用
-replace链式替换,但得穷举所有要转的字符,维护成本高;Get-Content读取时必须指定-Encoding UTF8,否则乱码 - 在线工具或 VS Code 插件(如 Fullwidth to Halfwidth):适合临时粘贴转换,不碰源文件编码,避免二次污染
- Word 虽能一键切换,但仅限于选中区域 + 中文输入法启用状态,且对非 ASCII 字符(如带重音的法语词)无效
容易被忽略的关键点
全角字符常和编码问题叠加出现——比如你看到 , 显示异常,第一反应是「转 UTF-8」,结果它还在那儿;更糟的是,某些编辑器把 \u3000(全角空格)渲染得和普通空格几乎一样,靠肉眼根本分不清。真正要命的不是怎么转,而是你根本没意识到它存在。开 视图 → 显示符号 → 显示所有字符 只能看见 · 和 →,对 \u200B(零宽空格)这类隐形字符依然无效。所以,只要文本来自复制粘贴、OCR 或旧系统导出,先查再转,别省这一步。


















