什么是零宽字符?
Unicode 包含数十种不可见字符,渲染时不显示任何内容,却真实存在于你的数据中:零宽空格(U+200B)、零宽不连字(U+200C)、零宽连字(U+200D)、词连接符(U+2060)、软连字符(U+00AD)、BOM(U+FEFF)、从左到右/从右到左标记(U+200E / U+200F)等等。它们在文本整形中有正当用途——也会被恶意用来给文本打指纹、绕过过滤器,或把载荷偷偷塞过输入校验。
它们藏在哪
- LLM 输出偶尔会包含 U+200B 或软连字符,导致正则匹配和精确字符串比较失败。
- 抓取的网页常常在文件开头带 BOM,还带来自 CMS 模板的零宽字符。
- 复制的代码可能含有不可见字符,破坏标识符或导致 JSON 解析报“意外字符”错误。
- 垃圾邮件和钓鱼利用零宽空格绕过关键词过滤(同形字 + 零宽连接符拼出的“freе”)。
- 水印——在文本中嵌入隐藏字符以追踪副本(扫描器会把这些暴露出来)。
如何使用结果
扫描会用可见标记高亮每个不可见字符,并列出每个码点的名称和数量。全部移除会清除它们——但要小心:如果来源用它们做水印,你移除的正是别人植入的东西。对 JSON、代码或数据库键来说,移除通常安全;对普通文本,请确认软连字符没有承载有意的换行提示。