BOM 与不可见字符

识别并去掉 BOM、零宽字符与孤立的行尾回车。

连零宽字符一起去掉
输入
输出

不可见字符不会让文本变短,只会让行为变怪:开头一个 U+FEFF 就能让 PHP、GCC 或某些解析器报错,正文里一个零宽空格会让两串看起来相同的文件名不相等,一个 U+202E 方向覆盖符能让 invoice.pdf.exe 显示成 invoice.pdf。这个工具把输入扫一遍,按码位列出它们各自出现在什么位置、有几个,再按开关清掉。

不是所有不可见字符都会被删掉:开头的 BOM 和 CRLF 里那个多余的回车始终处理,正文中间的 CR 一律不碰,不换行空格 U+00A0 只统计、不删除;中间的 BOM 与零宽、方向、行分隔符都归「连零宽字符一起去掉」这个开关管。「加上 BOM」方向给的是文本层的 U+FEFF,同时显示前若干字符的 UTF-8 字节与 Base64 前缀 77u/,方便确认结果。检测与清理都在浏览器本地完成。

BOM 与不可见字符怎么用

  • 查隐藏字符:保持「去掉」方向粘贴文本,表格按码位给出名称、数量和位置(开头、第几个字符),清理后的文本单独列在下方。
  • 只清 BOM:关掉「连零宽字符一起去掉」开关,就只去掉开头的 BOM 和 CRLF 里多余的回车,正文里的零宽与方向字符原样保留。
  • 给 CSV 加 BOM:切到「加上 BOM」,Excel 打不开 UTF-8 CSV 时用它补上 U+FEFF,再按给出的 EF BB BF/77u/ 特征核对是否真的带上。
  • 识别范围:识别范围是 BOM(U+FEFF)、零宽类(U+200B、U+200C、U+200D、U+2060、软连字符 U+00AD)、方向控制符(U+202A–U+202E)、行与段分隔符(U+2028、U+2029)、CRLF 里那个多余的回车,另外还会统计但不删除不换行空格 U+00A0。

常见问题

为什么不把 U+00A0 和正文中间的 CR 一起删掉?

U+00A0 不换行空格是有内容的字符,删掉会改变文本本身(它常是网页复制下来的产物,需要时换成普通空格更合适),所以工具只统计、标注并提醒你手工处理。正文中间的 CR 同理:它可能是旧 Mac 换行、也可能是数据的一部分,只有紧跟 LF 或位于末尾的 CR 才被认定为 Windows 换行残留并去掉。

零宽字符是怎么被塞进代码或数据里的?

三条常见路径:从网页、IM 或 PDF 里复制时把排版用的 U+200B/U+FEFF 一起带过来;输入法或翻译工具插入的软连字符 U+00AD;以及人为构造——在标识符或文件名里插一个 U+202E,显示顺序和真实字节顺序就会不一致,这是同形字符钓鱼和「invoice.pdf.exe」这类伪装的标配。所以字符串比较不相等而看不出差别时,先扫一遍比猜更快。

加了 BOM 为什么文件里还是没有 EF BB BF?

这个工具处理的是文本,BOM 属于文件字节层。文本里加上 U+FEFF 只有被写成 UTF-8 文件时才落成 EF BB BF 三个字节;如果写入端用的不是 UTF-8,或者被后续程序读走再写出时去掉了,字节里就看不到。方向给的前 12 字符 UTF-8 字节和 Base64 前缀 77u/ 就是用来核对这一层的。

对应功能编号 #19无需安装,手机端同样可用按 Ctrl + K 换工具