零宽字符检测清理

零宽字符检测是把文字里看不见的字符逐个找出来的过程:零宽空格、BOM、方向控制符、Tag 字符等不占位置,却会让字数对不上、搜索匹配失败、代码报错,甚至藏着水印或给 AI 的隐藏指令。本页粘贴即检测,标出每个隐形字符在第几行第几个字、是哪个码点,按类别一键去除,emoji 不会被拆散。全程浏览器本地处理,文字不上传。

清理哪些字符(只影响清理结果,不影响检测)
  • 零宽空格、零宽连接符、BOM 等,不占位置却会让字数和搜索对不上
  • 改变文字显示方向,可被用来伪装文件名或让代码看起来和实际不同
  • 每个对应一个看不见的英文字母,常被用来给 AI 藏指令
  • 本该跟在 emoji 或汉字后面,连成一串时可能藏着文字
  • 看着是空、却不算空格,常被用来做空白昵称
  • C0/C1 控制符、软连字符、行与段分隔符等
  • 全角空格、不换行空格等,排版里多半有意为之,默认不动
显形样式:

如何使用零宽字符检测清理

1

把要检查的文字粘贴进输入框,或点「打开文本文件」读入 txt、csv、json 等纯文本文件;不确定效果可以先点「填入示例」。

2

看结论条、风险提示和标注预览:每个隐形字符都换成了带名字的小标签,统计表列出码点、名称和个数,展开「逐个位置」能看到第几行第几个字符。

3

勾选要清理的类别(特殊空格默认不动),在「清理结果」里核对后点「复制清理结果」或「下载 .txt」;想把证据发给别人,点「复制显形文本」。

关于零宽字符检测清理的常见问题

零宽字符检测会把我的文字上传到服务器吗?
不会。检测、标注、清理和隐藏文字解码都是浏览器里的字符串运算,文字和打开的文件都不经过网络,也不保存;页面只在本地存储里记住你勾选的类别、保护开关和显形样式,不存任何输入内容。
文字里为什么会有零宽空格,是从哪来的?
常见来源有:从公众号、网页复制时带出来的排版字符;一些网站的防复制脚本故意插入的零宽空格;文本盲水印;输入法和编辑器自动加入的连接符;Windows 记事本保存 UTF-8 文件时在开头写入的 BOM(U+FEFF)。它们看不见,却会让字数、搜索和比对对不上。
去除零宽字符会不会把 emoji 表情拆散?
默认不会。一家三口、彩虹旗这类 emoji 靠零宽连接符 ZWJ 拼起来,红心等 emoji 后面跟着变体选择符,旗帜 emoji 里有 Tag 字符,本页会识别这些组合并自动保护,不删、不标红。取消「保护 emoji 与文字必需的连接符」后才会一律删除,表情可能因此拆成好几个。
复制的文字有删不掉的空格,怎么去除隐藏字符?
「删不掉的空格」多半是零宽空格、韩文填充符、盲文空白或不换行空格。粘贴进来看标注预览就知道是哪一种;零宽字符和填充字符默认就会清理。全角空格、不换行空格属于特殊空格,排版里常是有意为之,默认不动,要处理就勾选「特殊空格」,它们会被换成普通空格。
零宽字符检测能发现文本盲水印吗?
能发现零宽字符本身:位置、种类和个数都会列出来。如果是本站「零宽字符隐写」生成的水印,页面会直接提示有几条,并可以去那边读出内容;只有两种零宽字符时,会提示可能是 0/1 编码。其他工具的私有格式只能看到字符分布,不保证能解出内容。
零宽字符检测能发现 RLO 方向控制符吗?
能,而且会单独提示风险。RLO(U+202E)等方向控制符会让后面的文字倒过来显示,可以把「invoice 加 RLO 加 fdp.exe」显示成看似 pdf 的文件名;在源代码里,它能让审查者看到的逻辑和实际执行的不一样,即 Trojan Source 攻击。清理时默认删除。
怎么检查给 AI 的提示词里有没有隐藏字符?
把提示词粘贴进来即可。Tag 字符(U+E0020 到 U+E007E)每个都对应一个看不见的英文字母,常被用来在网页或文档里给 AI 藏指令,俗称 ASCII 走私。本页会把这类提示词隐藏字符解码成英文显示出来,并默认删除;连成一串的变体选择符藏的文字也会尝试解出。
CSV 文件开头的 BOM 怎么检测和去除?
点「打开文本文件」读入 CSV 或 JSON,开头有 BOM 时会出现专门的提示。本页读取文件时特意不让浏览器吞掉 BOM,所以能查出来。BOM 去除后点「下载 .txt」,下载的文件本身也不带 BOM,可以直接改回 .csv 扩展名使用。
零宽字符检测清理支持多大的文本,手机上能用吗?
粘贴的文字上限 100 万字符,打开的文件上限 8MB,超过会提示分段处理;标注预览只显示前 2 万字,统计与清理覆盖全文。手机浏览器同样可用:长按粘贴文字,结果区可以直接复制清理后的文字。
零宽字符检测会把同形字也找出来吗?
不会。同形字(比如西里尔字母 а 冒充拉丁字母 a)是看得见的正常字符,不在本页的检测范围;字体、排版、图片里的水印也不在范围内。本页只检测下方字符表里的隐形字符,共 479 个码点,分 7 类。

零宽字符检测能查出哪 7 类隐形字符

本页的字符表共收录 479 个码点,分成下面 7 类,隐形字符检测与清理都以它为准。勾选框只影响清理结果,检测统计始终覆盖全部类别。

隐形字符类别、代表码点与本页默认动作
类别代表码点常见来源本页默认动作
零宽字符U+200B、U+200D、U+FEFF公众号与网页复制、防复制脚本、盲水印、Windows 记事本 BOM删除
方向控制符U+202E、U+200F、U+2066恶意代码(Trojan Source)、RLO 文件名伪装、阿拉伯文与希伯来文混排删除
Tag 标签字符U+E0041、U+E007FAI 提示词注入(ASCII 走私)、旗帜 emoji 的组成部分删除
变体选择符U+FE0F、U+E0100emoji 彩色样式、日文异体字、变体选择符藏字删除(emoji 与异体字后的单个保留)
空白填充字符U+3164、U+2800、U+115F空白昵称、绕过「不能为空」的输入框删除
控制与格式字符U+0000、U+00AD、U+2028PDF 与旧系统导出、网页软连字符、终端日志删除(行/段分隔符换成换行)
特殊空格U+00A0、U+3000、U+2009网页排版(NBSP)、中文段首全角空格、Word 排版默认保留,勾选后换成普通空格

零宽空格为什么会让字数统计对不上

因为零宽字符屏幕上不占位置,但程序照样把它算作字符和字节。举个具体例子:「你好世界」在「好」和「世」之间、句末各藏一个零宽空格,肉眼看是 4 个字,JavaScript 的 length 却返回 6,按 UTF-8 存成文件是 18 字节(4 个汉字 12 字节,每个零宽空格再多 3 字节)。表单字数限制、数据库唯一索引、Excel 查找匹配,都会因此和你看到的不一样。

常见隐形字符的显示宽度、length 与 UTF-8 字节
字符显示宽度length(UTF-16 码元)UTF-8 字节
U+200B 零宽空格 ZWSP01E2 80 8B
U+FEFF BOM / 零宽不换行空格01EF BB BF
U+202E RLO 方向控制符01E2 80 AE
U+E0041 Tag 字母 A02F3 A0 81 81

边界提醒:Tag 字符位于辅助平面,一个就占 2 个 UTF-16 码元、4 个 UTF-8 字节,藏一句 20 个字母的英文指令就多出 40 个 length;而 BOM 只在文件开头出现时才叫 BOM,夹在正文中间时它是零宽不换行空格,本页两种情况都会标出。

去除零宽字符时哪些不该删

有些隐形字符是 emoji 或文字的组成部分,删掉会改变字形甚至含义。本页默认按相邻字符判断并保护它们,统计表的「其中受保护」列会单独计数。

需要保留的隐形字符与删掉后的后果
场景码点序列删掉的后果
家庭等组合 emoji 的零宽连接符U+1F468 U+200D U+1F469 U+200D U+1F467一家三口拆成三个单独的人
红心等 emoji 后的变体选择符U+2764 U+FE0F彩色 emoji 可能变成黑白文字符号
英格兰等旗帜的 Tag 序列U+1F3F4 + Tag 字母 + U+E007F旗帜变成一面黑旗
日文异体字(IVS)汉字 + U+E0100人名、地名里的异体字退回成标准字形
波斯语、印地语等文字的连接符U+200C / U+200D字母连写方式改变,拼写变成另一个样子
泰文、高棉文的断词零宽空格U+200B换行位置出错,长句挤成一行

零宽字符检测要警惕的三种危险字符

危险隐形字符与本页的提示方式
字符风险本页怎么提示
方向控制符(U+202E RLO 等)Trojan Source:代码看起来和实际执行的不一样;RLO 字符把 exe 文件名伪装成 pdf单独列出风险提示,清理时默认删除
Tag 字符(U+E0020–U+E007E)ASCII 走私:给 AI 的提示词隐藏字符,人看不见、模型读得到把藏着的英文解码显示出来,默认删除
变体选择符串(U+FE00–U+FE0F、U+E0100–U+E01EF)连成一串时每个对应一个字节,能在一个 emoji 后面藏下整句话按 UTF-8 尝试解码,解出可读文字才提示

零宽字符检测还有哪些叫法

零宽字符检测也常被叫作隐形字符检测、不可见字符检测、隐藏字符检测或特殊字符检测;把它们删掉就是零宽字符清理、零宽字符去除、去除零宽空格、去除隐藏字符。处理文件开头的 BOM 去除、查方向控制符和 RLO 字符、排查提示词隐藏字符,也都可以用本页。英文资料里对应的是 zero width space remover 和 invisible character detector。

只想把从 Word 或网页粘贴来的内容一键变成纯文本,用 文本清理;要处理空行和多余空格,用 去空行空格;想读出或嵌入零宽水印,用 零宽字符隐写。