文件开头的奇怪字符

时间:2011-01-11 16:34:57

标签: ruby parsing unicode character-encoding ascii

我正在编辑的文件的开头有奇怪的字符(使用textmate ...) 我不知道他们什么时候出现,他们在textmate中看不见但是我的脚本读取文件变得疯狂..

这是文件中的前几个字符(如od命令所示):

0000000 177377 000120 000105 000117 000120 000114 000105 000072

前2个不应该在那里我想..也许它们是由一些奇怪的Dropbox同步引起的?或其他东西..但它们往往会重新出现(我还不知道...)

我的问题:177377是什么,以及在我的ruby脚本中删除它的简单方法? 谢谢

1 个答案:

答案 0 :(得分:5)

000000 177377(十六进制0x0000FEFF)是byte-order mark(BOM)。它向消费者表明文件的其余部分位于big-endian UTF-32 encoding。在您的情况下,这可能不是正确的,但这就是字节所指示的内容。

如何处理它有点棘手。通常,BOM 准确地表示以下数据的编码。检测并跳过它并将后续内容视为在本地默认字符集中处理通常是不对的,即使它在这里似乎是正确的。相反,我试图弄清楚为什么你的编辑器插入了错误的BOM以及是否有办法禁用它。