祈灵工具箱

👻不可见字符检测 - 零宽字符、Trojan Source、同形字清理

从网页、聊天记录或文档里复制来的文字,常常夹带看不见的字符:零宽空格让搜索和比对失效,BOM 让配置文件解析出错,不间断空格让代码报语法错误,软连字符藏在单词中间,双向控制符能让源代码显示的顺序与编译器看到的不同(即 Trojan Source 攻击),西里尔字母 а 冒充拉丁字母 a 可以伪造网址和用户名。这个工具逐字检查文本:零宽字符(ZWSP、ZWNJ、ZWJ、WJ、BOM 等)、双向控制符(LRE、RLE、LRO、RLO、PDF、LRI、RLI、FSI、PDI、LRM、RLM),并逐行检查它们是否配对;各种异常空格(NBSP、全角空格、Em 空格等)、软连字符、C0/C1 控制字符、标签字符、变体选择符、全角字母数字、叠加的组合符号(Zalgo 文字),以及内置精简易混淆字符表里的西里尔、希腊、亚美尼亚、切罗基字母和单词内混用多种文字的情况。中文与英文混排、正常的中文全角标点和 emoji 组合序列不会误报。结果以彩色标记嵌在原文中,不可见字符显示为名称缩写,点击可查看码点、名称、通用类别、文字、UTF-8/UTF-16 编码和行列位置。清理可选预设或逐项勾选,并可做 NFC/NFKC 规范化,前后差异一目了然,结果一键复制。全部在浏览器本地完成。

免费 · 无需注册 · 浏览器本地处理最后更新:

正在加载工具...

如何使用不可见字符检测与清理

  1. 1粘贴要检查的文本、代码、网址或用户名
  2. 2查看分类统计、Trojan Source 警告和标记视图,点击标记查看字符详情
  3. 3选择清理预设或逐项勾选,对比前后差异后复制结果或替换输入

常见问题

什么是 Trojan Source 攻击?
Unicode 的双向控制符(如 RLO U+202E、LRI U+2066、PDI U+2069)用于在同一行混排从左到右和从右到左的文字。2021 年公布的 Trojan Source(CVE-2021-42574)利用它们,让编辑器和代码审查界面显示的代码顺序与编译器实际读取的顺序不同,例如把一段判断藏进看似是注释的地方。本工具会标出每个双向控制符,并逐行检查嵌入/覆盖是否用 PDF 结束、隔离是否用 PDI 结束,未配对的会给出警告。
为什么要检测同形异义字?
不少文字里有和拉丁字母长得一模一样的字符,比如西里尔字母 а、е、о、р、с 与拉丁字母 a、e、o、p、c 外观相同但码点不同。攻击者用它们注册仿冒域名、伪造用户名或绕过关键词过滤。工具在含有拉丁字母的单词里发现这些字符、或整个单词都由可冒充拉丁字母的字符组成时会标出,并可替换为对应的拉丁字母。纯俄语、希腊语文本不会被误报。
清理会不会破坏 emoji 或中文?
默认不会。emoji 组合序列中的 ZWJ(如家庭 emoji)和 VS16 变体选择符是正常用法,默认既不标记也不删除;中文全角标点也不算问题,全角空格默认保留,需要时可勾选替换。只有“最严格”预设会做 NFKC 兼容规范化,它会把 fi 拆成 fi、把 ① 变成 1、把全角符号变成半角,适合用于代码和标识符,不适合排版文本。
NFC 和 NFKC 有什么区别?
同一个字形在 Unicode 里可能有多种编码,例如 é 可以是一个码点,也可以是 e 加组合重音符。NFC 把它们统一成合成形式,不改变外观,适合大多数文本,可避免“看起来相同却比较不相等”。NFKC 还会进行兼容分解,把全角字母、上标、连字、带圈数字等换成普通字符,可能改变外观,适合清洗用户名、搜索关键词和代码。