清除不可见字符的源代码文件

时间:2009-07-01 07:30:26

标签: unicode character

我有一个奇怪的问题:在我的HTML / PHP代码的某个地方,有一个隐藏的,看不见的角色,我似乎无法摆脱它。通过从Firebug复制并转换它,我将其标识为或“零宽度不间断空间”。它在我的网站中显示为非空文本节点,并导致严重的布局问题。

问题是,我无法摆脱它。即使在(呃)转向Invisibles时,我也无法在我的文件中看到它。我似乎无法找到它,似乎没有搜索工具。我重写了我的代码,但它似乎在某个框架文件中更深处。

任何好的工具,通过字符串或类似的东西来查找字符? (Mac OS X)

8 个答案:

答案 0 :(得分:37)

您没有在编辑器中获取该字符,因为您无法在文本编辑器中找到它。 #FEFF或#FFFE是所谓的byte-order marks。它们是微软的一项发明,用于记录Unicode文件,其中存储了多字节字符。

要摆脱它,请告诉编辑器将文件保存为ANSI / ISO-8859或Unicode 无BOM 。如果您的编辑器不能这样做,您将不得不切换编辑器(遗憾地)或使用某种截断工具,例如,十六进制编辑器,允许您查看文件真正的方式外观。

在google上,似乎TextWrangler有一个“UTF-8,无BOM”模式。否则,如果您对终端感到满意,可以使用Vim:

:set nobomb

并保存文件。的Presto!

字符始终是文本文件中的第一个。支持BOM的编辑不会像我提到的那样向你展示。

干杯,

答案 1 :(得分:10)

如果您使用的是Textmate,则问题出在UTF-8文件中:

  1. 打开文件
  2. 文件>重新打开编码> ISO-8859-1(Latin1)
  3. 您应该能够看到并删除文件中的第一个字符
  4. 文件>保存
  5. 文件>重新打开编码> UTF8
  6. 文件>保存
  7. 每次都适合我。

答案 2 :(得分:5)

这是一个byte-order mark。在Mac OS X下:打开终端窗口,转到您的来源并输入:

grep -rn $'\xFEFF' *

它会显示包含BOM的行号和文件名。

答案 3 :(得分:2)

使用notepad plus plus ..有一个显示所有字符的选项

答案 4 :(得分:2)

我不是Mac用户,但我的一般建议是:当其他所有方法都失败时,请使用十六进制编辑器。在这种情况下非常有用。

请参阅"Comparison of hex editors" in WikiPedia

答案 5 :(得分:1)

vi或vim将显示任何非EOL字符。

答案 6 :(得分:0)

我很确定Textwrangler会这样做。

编辑:VersionTracker link因为Bare Bones网站似乎再次失败。

答案 7 :(得分:-1)

  1. 将内容粘贴到Notepad ++
  2. 在菜单编码中 - >转换为ANSI
  3. 你很高兴。