Notepad++全角标点转半角须用查找替换正则或插件,因全角/半角是不同Unicode码位,编码转换菜单无效;推荐正则[\uFF01-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65]匹配全角标点后逐个替换为对应半角字符。

Notepad++ 里全角标点转半角的快捷路径
直接用内置的「字符集」转换不可靠,全角标点不会被识别为编码问题,而是独立 Unicode 字符,必须走「查找替换 + 正则」或插件方案。
用正则表达式批量替换(推荐,无需插件)
Notepad++ 的「查找替换」支持 Unicode 属性匹配,但实际更稳妥的是显式列出常见全角标点。注意开启「正则表达式」模式(勾选 . matches newline 不需要,但必须选中 Match case 和 Wrap around)。
- 打开
Search → Replace(Ctrl+H) - 在「Find what」中粘贴以下正则(一行一个,可分多次运行,或合并为单条用
|分隔):[\u3000-\u303f\uff01-\uff0f\uff1a-\uff20\uff3b-\uff40\uff5b-\uff65]
- 在「Replace with」中填对应半角字符,例如:
(空格)、!、,、:、[、{等 - 点击
Replace All—— 注意:这个正则会匹配所有全角 ASCII 对应字符(含全角字母数字),如需只处理标点,应缩小范围,比如只用:[\uff01-\uff0f\uff1a-\uff20\uff3b-\uff40\uff5b-\uff65]
为什么不能用「编码转换」或「字符集」菜单?
因为全角/半角是 Unicode 字符层面的差异,不是编码问题。比如全角逗号 ,(U+FF0C)和半角逗号 ,(U+002C)是两个完全不同的码位,UTF-8 或 GBK 下它们都合法存在。选择「Encoding → Character sets → Chinese → GBK」这类操作对它们毫无影响。
- 误选「Convert to UTF-8」或「Convert to ANSI」只会改变文件保存编码,不修改字符本身
- 「Character set」菜单仅影响显示映射(老旧系统下可能乱码),不触发字符替换
- 真正生效的只有「Replace」或插件(如
TextFX或Python Script)
用 Python Script 插件做精准控制(适合复杂文本)
如果文本混有中文、英文、代码片段,且要保留全角中文字符(如「,」转「,」但「你好」不变),正则容易误伤。此时装 Python Script 插件后写几行逻辑更稳。
- 先安装插件:Plugins → Plugin Manager → Show Plugin Manager → 勾选
Python Script→ Install - 重启后,Plugins → Python Script → New Script,粘贴以下内容:
import re def full2half(text): result = '' for char in text: code = ord(char) if 0xFF01 <= code <= 0xFF5E: result += chr(code - 0xFEE0) elif code == 0x3000: # 全角空格 result += ' ' else: result += char return result <p>editor.setText(full2half(editor.getText())) - 保存为
full2half.py,之后可通过 Plugins → Python Script → Scripts →full2half一键执行
这个脚本只处理 U+FF01–U+FF5E(全角 ASCII)和 U+3000(全角空格),跳过汉字、平假名等其他全角字符,避免把「ABC」错误转成「ABC」却漏掉本该保留的「测试」。


















