什么是隐形字符检测器?
隐形字符检测器可扫描文本中隐藏的 Unicode 字符,例如零宽空格、软连字符和不间断空格。这些字符往往导致代码报错、复制粘贴异常,甚至隐藏恶意内容。将任意文本粘贴进来,即可立即显示每个隐形字符的 Unicode 名称及其位置。
检测器会扫描六类不可见字符:零宽字符(U+200B、U+200C、U+200D)、方向标记(LRM、RLM)、变体选择符、控制字符、异常空格(不间断空格、em-quad、细空格)以及其他罕见隐形字符。每个命中显示 Unicode 名称、十六进制码点、位置和分类。可按分类过滤,一键复制清理后的文本。
使用方法
- 将文本粘贴或输入到输入框中——隐形字符会在您输入时立即被检测出来。
- 查看高亮显示的结果,其中包含每个隐形字符的 Unicode 名称(如 U+200B 零宽空格)、位置及上下文。
- 用筛选标签选择要移除的类别,然后点击“清理文本”。完成后即可复制或下载清理后的结果。
何时使用
- 调试从网页复制过来的代码,出现莫名其妙的语法错误时排查根因。
- 把用户提交的文字入库之前先做一遍清洗。
- 检查可疑邮件或文档里有没有藏字形混淆字符或夹带的 Unicode。
结果
您将从网站复制的代码片段粘贴到编辑器中,却一直报语法错误。检测器发现变量名之间隐藏了两个零宽空格(U+200B),以及行尾存在一个从右到左标记(U+200F)——这些字符在编辑器中完全不可见,却导致编译器报错。
常见问题
- 零宽空格是什么,为什么会让我的代码崩掉?
- U+200B 是个隐形字符,本来是给亚洲文字排版用的。但黏贴到代码里之后,它夹在两个字符中间却不显示,于是「const foo」对编译器来说其实是「constfoo」,被识别成一个未知标识符,直接报错。
- 不可见字符就一定是坏东西吗?有没有正当用途?
- 很多都有用。零宽连接符可以拼出家庭组合 emoji,变体选择符决定 emoji 显示方式,不间断空格让人名不被换行拆开。检测器会分类列出,你想保留哪类就保留哪类,其它的清掉。
- 不可见字符会不会被用来做坏事?
- 会。钓鱼邮件有时藏双向覆盖字符(U+202E),把「invoice.exe」在显示时翻成「invocxe.pdf」骗人下载。提示词注入攻击也会用到。把文本扔进检测器一跑,这些隐藏操作立刻暴露。
- 「清理文本」是把所有不可见字符都删掉,还是只删某几类?
- 会删掉当前过滤设置下检测器标出的全部不可见字符。如果你把「空格」这一类关掉,那异常空格就不会被动。想全部干净,先把六类全打开,再点清理。
- 普通的空格和换行也会被标出来吗?
- 不会。标准 ASCII 空格(U+0020)、Tab(U+0009)、换行(U+000A/U+000D)默认不报,因为它们是预期之内的。只有那些异类——不间断空格、细空格、en-space 等——会被标出,这样报告才聚焦在真异常上。