1次注意到问题,根本不是水印故事,有用户将AI聊天的一个config片段粘贴到我们的一个JSON工具中,解析器拒绝了它,错误指向一个不在代码点的查看器中打开字符串,发现两个大括号之间有一个零宽度空间,在我尝试的每个编辑器中都是看不见的。文件看起来很完美,被破坏了。当Anthropic在2026年8月宣布Claude's输出将携带看不见的标记时,同一类字符从偶尔的粘贴事故变成了人们想要故意检查的东西,所以我构建了一个 克劳德水印去除剂 它显示文本中的每个隐藏字符并剥离您告诉它的人。
TL;博士: 工具 克劳德水印去除剂 unicode隐形字符-零宽度空格、变体选择器、非断开空格、方向标记等非打印码点扫描粘贴的文本-用其码点名称突出显示每一个到位,一键生成清理过的副本,还可正常化智能报价和排版破折号,如果您要求检测和删除,这两种内容都会在浏览器中运行客户端:您粘贴的任何内容都不会上传,并且该工具一旦加载就离线工作。
AI文字水印是什么?
AI文本水印是嵌入生成文本中的信号,可让软件识别文本为稍后机器编写的版本在2026年8月成为新闻的版本是字符级:在可见字母之间编织的隐形Unicode代码点,携带任何意义读者可以看到的覆盖Anthropic's推出描述了与图像的C2PA来源元数据一起的正是这种标记,内容证明和真实性联盟维护的内容凭据的行业标准()https://c2pa.org/specifications/specifications/2.2/index.html)。
Unicode 标准中定义的字符级标记是有效的,因为 Unicode 包含数百个渲染为空的代码点。变体选择器,用于在它们之前选择字符的字形变体()https://www.unicode.org/faq/vs.html),应用于普通字母时显示为零像素。存在零宽度空间和连接符来控制换行和连字。这些落入段落的序列对于一个人来说是不可见的,对于扫描仪来说是明确的。
从那个设计中得出两件事,这两件事都关系到你应该如何对待它。首先,标记通过复制和粘贴、通过数据库、进入 git commits、进入已发布的页面。其次,它们本质上是脆弱的:它们无法在重新输入中生存下来,并且可以通过从未设计过预期的系统在途中打破东西。
为什么隐形角色会破坏真实系统?
为大多数软件比较字节,而不是外观,两个看起来相同的字符串是不同的键,不同的文件名和不同的值,当一个人携带隐藏的代码点的那一刻,这些是我自从我们发货检测器以来用自己的日志看到的故障:
| 它降落在哪里 | 出了什么问题 |
|---|---|
| JSON 或 YAML 配置 | 解析器错误指向 "valid"行,或默默无法匹配的键 |
| 源代码 | 编译器拒绝标识符;代码审查差异没有显示明显的变化 |
| 数据库 | 独特约束拒绝合并的看起来重复的行 |
| 电子表格 | VLOOKUP 并加入明显存在的缺失行 |
| 字符限制 | 计数夸大:一条写有 270 个字符的推文拒绝发布 |
| URL 和 slugs | 链接404是因为slug携带零宽度字符 |
| 抄身 | Ctrl+F找不到你直视的短语 |
字符计数情况是我们直接测量的情况:我们的 词计数器 counts grapheme 簇,所以隐藏的代码点不会膨胀其可见字符图形,但一个计算 UTF-16 单位的平台会看到其中的每一个,这两个数字之间的差距往往是文本携带某些东西的第一个暗示。
克劳德水印去除剂检测到什么?
AI生成的和文字处理器的文本中出现的每一类非打印字符, 该工具扫描, 而不仅仅是与任何单个供应商相关的字符:
| 类别 | 代码点 | 为什么它在那里 |
|---|---|---|
| 零宽度字符 | U+200B、U+200C、U+200D、U+FEFF | 换行控制、连接器行为、杂散字节顺序标记 |
| 变体选择器 | U+FE00 至 U+FE0F、U+E0100 至 U+E01EF | 字形选择;水印报告中引用最多的范围 |
| 特殊空间 | U+00A0、U+2000 至 U+200A、U+202F、U+3000 | 非破译和印刷空间读作普通空间 |
| 方向标记 | U + 200E、U + 200F、U + 202A 至 U + 202E | 双向文本控制 |
| 软连字符和单词连接器 | U+00AD,U+2060 | 除了线末端之外,看不见 |
| 印刷标点符号 | 智能报价、em 和 en 破折号、省略号 | 可见,但告诉您何时想要普通的 ASCII |
每个查找都以其官方 Unicode 名称和代码点突出显示到位,因此您可以在决定之前准确查看位置。删除是每个类别:剥离零宽度字符和变体选择器,如果您的布局需要保留非中断空间,将印刷标点符号转换为普通 ASCII 或保留其样式。清理后的文本和更改内容的计数从另一侧出来。
如何检查文本中隐藏的水印字符?
- 将文本粘贴到 探测器。一切都在浏览器中运行,因此草稿、客户端工作和未发布的副本可以安全粘贴。
- Read the highlights。every隐形字符显示为标记标记与其代码点名称, 在上下文中, 因此一个合法的非断裂空间在法语句子是区分一个零宽度的空间在英语单词中间。
- 选择要剥离的内容。默认值删除没有可见功能的字符,并单独保留可见排版。
- 复制已清理的输出,如果您想要证明剩余的内容,请检查前后计数。
如果您喜欢自己查看原始代码点,请通过以下方式运行文本 Unicode 转换器的,它将每个字符显示为它的转义序列,下面的一行人在 Node 中做同样的事情,以便快速抽查:
const hidden = /[--︀-️]/g
const text = process.argv[2] ?? ''
console.log([...text.matchAll(hidden)].map(m =>
`U+${m[0].codePointAt(0).toString(16).toUpperCase().padStart(4, '0')} at index ${m.index}`
))
空数组意味着没有一个常见的隐藏范围存在。其他任何东西都会告诉您代码点及其所在位置。
AI水印去掉可以吗?
对于您自己的内容,清理隐藏字符是普通的文本卫生,与从您即将共享的 URL 中剥离跟踪参数的操作相同。您提示文本,您对其进行编辑,您以自己的名义发布它,并且您负责任;破坏解析器和充气计数的隐形代码点是该工作流程中的缺陷,而不是其功能。
诚实的对位法值得明确地指出:出处标记的存在是为了让读者、平台和研究人员能够大规模地从人类文本中告诉机器文本,这是一个合法的目标。从文本中剥离标记,以便通过检测,禁止人工智能写作--分级论文、具有披露政策的出版物、禁止生成评论的市场--无论是否带有水印,都违反政策,删除字符不会改变文本是什么。从事统计模式而不是隐藏字符的检测器不受清洁的影响,这在任何人将字符擦洗视为匿名之前就值得了解。我们的立场是无聊的:披露需要披露的内容,并使您发布的文本不包含您没有选择放置的字符。
清洁会改变文本的阅读方式吗?
No。删除零宽度字符和变体选择器删除正在渲染为空的代码点,因此可见文本与字符相同。您可以选择的两个更改通过设计可见:将智能引号和排版破折号转换为它们的 ASCII 等效项,将异国空间折叠为普通空间。两者默认关闭,并且各自显示替换数量,因此没有什么变化是默默的。 案例转换器 当您还标准化标题或标识符时,在清理后立即配对。
C2PA和图像水印呢?
Text和图像标记不同。AI生成器的图像越来越多地携带C2PA内容凭证:描述文件是如何制作的签名元数据,嵌入到文件容器中而不是像素。那是与相机EXIF结构意义相同的元数据,适用相同的纪律 - 在发布文件之前,请先了解文件携带了我们的 EXIF 去除剂 显示照片中的每个元数据字段,并完全在浏览器中删除您选择的内容;的 元数据的图像指南 以与本文相同的深度涵盖这一面。
这与简单的寻找和替换有何不同?
你不能在搜索框中键入一个隐形字符,这使得手动替换成为跨越几百个候选代码点的猜谜游戏。所有非 ASCII 的盲法币条是另一条沟:它会破坏合法的重音名称、货币符号和非拉丁文本以及噪音检测器's job 是中间路径 - 命名它找到的每个隐藏字符,在上下文中,并让你有意删除类别。出于同样的原因,避免"清理器"将您的文本上传到服务器来处理它;您正在清理的文本通常正是您尚未发布的文本。这个通过构建是客户端的,就像中的每个工具一样 隐私优先收藏。
常见问题
有关隐形字符和清理人工智能文本的常见问题,回答了我们回答它们的方式。



