在eclipse中没有BOM编码的utf8

时间:2012-05-11 10:12:15

标签: php eclipse byte-order-mark

经过一番头痛后,我发现使用set encoding UTF8(带BOM)的eclipse会导致错误。当您使用包含导致网页标题在Chrome主体内呈现时,它会导致添加空格。

即。在index.php上,在当然之前或之​​后没有间隙

<?php include_once('header.php'); ?><body>test</body>

和header.php(当然没有间隙)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test title</title>
</head>

然后测试标题出现在正文中(不在视图源中,而是在chrome中的控制台中)。这会在页面顶部产生间隙。

在notepad ++中打开index.php和header.php,并在没有BOM的情况下将编码更改为UTF8解决了这个问题。 如何在Eclipse中解决这个问题?!切换到记事本++是不可取的,eclipse中有太多很好的功能是有用的(更好的自动完成,自动版本控制等)。

给我一​​个谜......

2 个答案:

答案 0 :(得分:8)

在eclipse中,只需将文件的编码更改为iso(右键单击文件 - > gt;属性)并删除前三个BOM字符,保存文件并重新打开。

答案 1 :(得分:7)

据我所知,只要您的工作空间(或文件类型)设置设置为UTF-8,就不会为新文件创建新的BOM,但旧的BOM(在其他编辑器中创建)将是维护甚至显示,具体取决于打开文件的编辑器(PHP编辑器,PHP + HTML编辑器)。

如果您的文件中有随机BOM,可能是因为您团队中的某个人默认情况下正在使用不同的BOM编辑器(问候,Dreamweaver!)。每当这个人创建一个新文件时,你和他的编辑都会插入并维护一个BOM(但如果你们中的一个删除了它就会没问题。)

如果您精通bash,我建议使用以下脚本批量修剪BOM:

sed '1 s/\xEF\xBB\xBF//' < input > output


BOM魔术源:http://thegreyblog.blogspot.com/2010/09/shell-script-to-find-and-remove-bom.html