跳到正文

隐形字符清除

Invisible Character Remover

找出并删掉粘贴文本里藏着的零宽空格、BOM、软连字符和双向控制符。

找出文本里存在却看不见的字符——零宽空格、双向控制字符、韩文填充字符、字节顺序标记——逐个命名,指出位置,删掉你选中的那些。emoji 内部的连接符默认保留,因为删掉它们会把一个家庭变成四个人。

🔒 完全在你的浏览器里运行unicodecleaninvisiblesecurity

原文

从出问题的地方直接粘过来——CMS、PDF、Excel、聊天软件都行。检查就在这个标签页里跑。

查到的东西

看不见的字符

8

种类数

5

把表情符号连在一起的

3

保留,不删

长得一样的字母

0

  • U+200DZERO WIDTH JOINER×3在表情符号里保留了 3个

    把字母连起来——也把表情符号连成家庭和职业。

  • U+3164HANGUL FILLER×2

    占宽度但是空的谚文字母。空白游戏昵称就是这么来的。

  • U+200BZERO WIDTH SPACE×1

    没有宽度的可换行位置。粘贴时最常见的搭车客。

  • U+00A0NO-BREAK SPACE×1

    把两个词留在同一行。常常跟着 Word 和网页过来。

  • U+00ADSOFT HYPHEN×1

    标出一个词可以断开的位置。不断开时看不见。

删掉哪些

清理结果

删除 4个,把 1个换成普通空格,3个是有意留下的。

它们在哪里

  • 第1行第7列ZERO WIDTH SPACECopied​ from a
  • 第1行第24列NO-BREAK SPACEweb page with pas
  • 第2行第17列HANGUL FILLERckname: ㅤㅤ⏎Soft­h
  • 第2行第18列HANGUL FILLERkname: ㅤㅤ⏎Soft­hy
  • 第3行第5列SOFT HYPHEN ㅤㅤ⏎Soft­hyphen i
  • 第4行第27列ZERO WIDTH JOINERrvive: 👨‍👩‍👧‍👦
  • 第4行第29列ZERO WIDTH JOINERive: 👨‍👩‍👧‍👦
  • 第4行第31列ZERO WIDTH JOINERe: 👨‍👩‍👧‍👦

怎么用

  1. 从出问题的地方原样粘贴

    CMS、PDF、Excel、聊天软件都行。顶部的计数说明里面有多少个不可见字符、分几种。

  2. 读每一种是做什么的

    每一种都列出码点、名称和它的实际用途。这就是区分一个误入的零宽空格和一个正在履职的变体选择符的方法。

  3. 选择要删掉什么

    默认删掉几乎总是意外带入的那些,保留几乎总是有意放置的那些。变体选择符默认不删:删掉它们会把 ❤️ 变成 ❤。

  4. 也检查形近字母

    另一个面板列出字形与拉丁字母完全相同的西里尔和希腊字母,以及混用字母表的单词。这是"这两个字符串看起来一样却不一样"的另一半。

常见问题

不可见字符是怎么进到我的文本里的?

几乎总是复制粘贴。网页用零宽空格做换行提示,PDF 用软连字符,有些编辑器会插入字节顺序标记。它们在剪贴板里活下来,然后悄悄破坏搜索和比较。

什么是韩文填充字符?

U+3164 及其邻居——渲染成什么都没有的韩文字符。在要求名字非空的服务里,它们是做出空白昵称的办法,所以也会出现在导出的用户数据里。

为什么对双向字符发出警告?

在阿拉伯文或希伯来文里它们很普通。在源码或文件名里,它们能让人读到的和机器执行的不一样——Trojan Source 一类的攻击,以及一个看起来以 .txt 结尾的文件名背后的把戏。

结果干净就说明文本安全吗?

就不可见字符而言,是。就形近字而言,不是——这里的易混淆字符表是常用的那一部分,不是整个四万行的文件,而且完全用同一种文字写成的形近字串没有混用,无从检测。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。