AI 输出中确实经常出现不可见 Unicode 字符——最常见的是不换行空格和窄不换行空格。但这些只是文本排版的普通副产品,并非隐藏水印。真正的文本水印技术确实存在,其原理是从统计上影响词语选择,不会留下任何可供查找的特殊字符。你只需几秒钟就能自行检查任何文本。
传言从何而来,为何广泛传播
每隔几个月就会有帖子走红,声称从 ChatGPT 复制的文本中包含隐藏字符,并得出结论:OpenAI 在暗中为输出添加水印以便追踪。
观察是真实的,结论却站不住脚。
人们发现的现象确实存在——把聊天回复粘贴到字符检查工具中,经常能看到渲染为空白内容的码位。问题出在解读上。水印必须经得起编辑、难以清除,并且能够编码信息。而那些一执行查找替换就消失、又不携带任何可恢复数据的字符,一条都不满足。
文本里到底有什么
AI 输出中出现的不可见字符,绝大多数都是普通的排版字符:
| 字符 | 码位 | 出现原因 |
|---|---|---|
| 不换行空格 | U+00A0 | 让数字和单位保持在同一行 |
| 窄不换行空格 | U+202F | 标点前和数字中的细间距 |
| 零宽空格 | U+200B | 换行提示,常从网页文本中继承 |
| 软连字符 | U+00AD | 标记单词在换行时可断开的位置 |
| 字节顺序标记 | U+FEFF | 来自上游文件的编码痕迹 |
每个字符都有正当的排版用途,而且比语言模型早出现几十年。它们的来源途径一如既往:模型从包含这些字符的训练文本中学到了它们,聊天界面以 HTML 渲染格式化输出,而从渲染后的网页复制时会带上标记中的一切。
最后一条途径的重要性超出大多数人的想象。很多被归咎于模型的字符,其实是浏览器复制引入的,而非生成过程。通过 API 获取同一条回复,得到的文本往往比从聊天窗口复制的更干净。
AI 文本水印真的存在吗?
存在——但它的工作方式与网传帖子的想象完全不同。
Google DeepMind 的 SynthID-Text 是文档最完善的方案,于 2024 年发表在《Nature》上。它的原理是在每一步 subtly 影响模型采样的词语,让生成的文本携带一种统计签名,可由配套的验证器检测出来。整个过程不涉及任何特殊字符,什么都不插入。水印存在于普通词语的选择之中,这正是它能经受复制和轻度编辑的原因,也是你无法通过检查码位找到它的原因。
OpenAI 曾公开讨论过文本水印研究,但尚未为 ChatGPT 输出推出经确认的消费级实现。
实际影响恰恰与恐慌相反:如果你使用的模型带有水印,删除不可见字符并不能去除它。而如果你发现了不可见字符,那不是水印的证据——只是排版的证据。
为什么不可见字符仍然值得重视
不管是不是水印,你通常都希望把它们清除,因为它们会悄无声息地引发问题:
- 搜索和查找替换失效。 两个字母之间的零宽空格会让搜索找不到这个单词,而且看不出任何原因。
- 表单校验拒绝输入。 邮箱地址或许可证密钥末尾带一个不换行空格,校验就会失败,而屏幕上看起来完全正确。
- 代码无法编译或解析。 本该是普通空格的地方出现不换行空格,会产生指向一行看起来毫无问题的代码的语法错误。
- CSV 导入损坏。 字节顺序标记附着在第一个列标题上,导致第一个字段悄悄映射失败。
- 出现重复记录。 两条看起来完全相同的记录其实是不同的字符串,去重操作会漏掉它们。
这些故障尤其恼人,因为文本看起来是对的。所有调试直觉都会指向别处。
如何检查并清理自己的文本
把文本粘贴到不可见字符扫描工具中。它会报告找到的每个零宽空格、软连字符、字节顺序标记和方向控制标记,并按类型计数,还可一键删除。所有内容都不会离开你的浏览器——扫描在本地运行。
如果想看得更全面,AI 文本清理工具可以在一次处理中同时处理不可见字符、长破折号、弯引号和表情符号。
一个值得养成的习惯:每当文本跨越系统边界时就检查一次。从聊天窗口到代码编辑器,从网页到电子表格,从 PDF 到表单。不可见字符正是在这些环节造成破坏,而此时清除它们的成本最低。
关于这些字符的完整清单及各自的作用,请参阅不可见 Unicode 字符参考。
常见问题
ChatGPT 会用不可见字符给文本加水印吗?
没有证据支持这种说法。在 ChatGPT 输出中发现的不可见字符是普通排版字符,例如不换行空格和窄不换行空格,它们已存在数十年,不携带任何数据。而且任何基础清理都能让它们消失,这使它们完全无法用作水印。
AI 生成的文本真的能被加水印吗?
可以。Google DeepMind 的 SynthID-Text 于 2024 年发表在《Nature》上,它通过影响模型的词语选择让输出携带统计签名。它不插入任何特殊字符,因此检查码位永远无法发现它,删除不可见字符也无法去除它。
为什么从 ChatGPT 复制的文本会含有隐藏字符?
主要是因为你复制的是网页渲染后的 HTML。聊天界面显示的是格式化输出,复制时会带上排版所用的间距字符。通过 API 获取同一条回复,得到的文本通常会明显更干净。
如何找出文本中的不可见字符?
把文本粘贴到能列出码位的扫描工具中,例如我们的不可见字符扫描工具。它会识别文本中存在的每类不可见字符并计数,还可按需删除,整个过程完全在你的浏览器中运行。
不可见字符有危险吗?
不算危险,但确实会造成麻烦。它们会导致搜索失效、表单校验失败、代码出现语法错误、CSV 表头损坏,并产生看起来完全相同的重复记录。由于文本看起来正常,这类问题格外难以排查。