文本中的不可见字符:藏在哪里,如何删除
不可见字符是一类看不见的 Unicode 码位,例如零宽空格、不间断空格和方向标记。它们看起来像普通空格,或者根本没有显示,所以文本看上去一切正常,但搜索、代码和表单校验却会把它当作另一段文字。要找出它们,需要检查码位;要删除它们,就删掉或替换这些特定的字符。
删除不可见字符文本里有看不见的乱码免费使用它们从哪里来
大多数不可见字符是复制时带进来的,而不是打字打出来的:
- 网页。 网站用不间断空格(U+00A0)防止两个词在行末被拆开,用零宽空格(U+200B)标出长单词可以换行的位置。复制一段文字时,这些字符也会一起被复制。
- 文字处理软件。 软连字符(U+00AD)用于断词排版。除非行在它那里断开,否则它是不可见的。有些编辑器还会在特定位置自动插入不间断空格。
- 聊天应用和邮件。 从聊天软件或邮件客户端复制的内容可能带有零宽连接符和方向标记,混合多种语言的文字尤其如此。
- 混合方向的文字。 阿拉伯语、希伯来语以及混合排版的文字会用到方向标记,例如从左到右标记(U+200E)、从右到左标记(U+200F),以及嵌入和覆盖字符(U+202A 至 U+202E)。它们控制的是显示方式,而不是文字内容。
- 字节顺序标记。 文件开头的字节顺序标记(BOM,U+FEFF)是某些编辑器会写入的签名。它不可见,但当文件被当作纯文本读取时,就会变成一个真正的首字符。
- AI 聊天窗口。 从一些 AI 聊天界面复制的文字也可能含有这些字符。more可能的原因是内容的渲染和复制方式,所以不要把它们看作有意为之的痕迹。
为什么会造成问题
每个不可见字符都是真实存在的码位,所以即使页面看起来完全一样,文字也已经发生了变化:
- 搜索失效。 单词中间的零宽空格会打断匹配,因此搜索这个词时什么也找不到。
- 代码出错。 源代码文件里的不间断空格在许多编程语言中都是语法错误,而且报错位置往往是一行看起来毫无问题的代码。弯引号指南介绍了代码中另一个常见的粘贴问题。
- 表单校验拒绝输入。 邮箱地址的 @ 后面如果带有零宽空格,看起来有效,却会通不过校验。
- 字数统计出现偏差。 不同工具统计字符数时,对这些字符的处理方式不同,因此同一段文字可能得出两个不一样的结果。清理前后都用字数统计统计一下,就能看出差别。
举个简单的例子。“invoice”这个单词有 7 个字母。如果中间插入一个零宽空格,它就变成 8 个码位,但屏幕上看起来完全一样。搜索“invoice”时,第二个版本会被漏掉。
怎样看到它们
直接看文字没有用,所以请使用下面的方法之一:
- 把文字粘贴到能列出码位的工具中,例如删除不可见字符,它会在改动任何内容之前先告诉你找到了什么。
- 在代码编辑器中开启显示空白字符或特殊字符的设置。这样,不间断空格就会以不同于普通空格的标记显示出来。
- 在编程语言中,打印可疑字符串的码位。例如在 Python 中,
[hex(ord(c)) for c in text]会列出每个字符的码位,不间断空格显示为 0xa0,零宽空格显示为 0x200b。
怎样删除它们
删除应当有针对性。如果删除所有非 ASCII 字符,重音符号、引号和其他语言的字母也会一并消失。正确的做法是:
- 把不间断空格替换为普通空格,因为它们几乎总是本应是空格的字符。
- 删除零宽空格、软连字符、字节顺序标记和多余的方向标记。
- 保留重音字母、弯引号和正常的标点。
修复粘贴文本专为从别处复制来的文字设计。如果复制内容还带有错乱的换行或奇怪的间距,就可以用它来处理。
用 fixmint 怎样操作
- 把文字粘贴到“你的文本”中。
- 查看找到的字符列表。每个字符都有名称,例如零宽空格显示为 ZWSP,并标明将对它执行的操作。
- 保持勾选“在表情符号内保留连接符”,这样表情符号序列仍会显示为一个符号。
- 只有在处理代码或数据时,才勾选“同时将弯引号、短破折号、长破折号和 … 转换为普通 ASCII 字符”,然后点击“复制”或“下载 .txt”。
特殊情况
- 表情符号序列会有意使用零宽连接符。删除它们会把一个表情拆成几个符号。
- 在某些排版中,不间断空格是正确的,例如数字和单位之间,以及某些法语标点中。只有确认它是多余的字符时,才替换它。
- 清理完文字后,用比较文本与原文对比,就能准确看到改动了哪些地方。
常见问题
不可见字符是 AI 写作的迹象吗?
不是。它们来自网页、文字处理软件、聊天应用,以及复制粘贴的各种场景。它们的存在无法说明文字是谁或什么写的。
删除所有非 ASCII 字符能解决问题吗?
不能。这样做也会删掉重音符号、引号和其他语言的字母。应当只删除特定的不可见码位。
怎样判断一个字符串里有没有不可见字符?
比较它的长度与你能看到的字符数量,或者把它粘贴到能列出码位的工具中。如果两者数量不一致,说明里面藏着看不见的字符。
由 AI 辅助翻译自英文原文。
评论
还没有评论。快来抢沙发。


