Eclipse中的UTF8无BOM编码

12

在头疼了一段时间之后,我发现eclipse使用设置编码UTF8(带BOM)会导致错误。当您使用include时,它会导致添加空格,在chrome中导致网页的标头在正文中呈现。

例如,在index.php上,没有任何间隙出现在 <?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,并将编码更改为UTF8 without BOM可以解决此问题。 我该如何在Eclipse中修复它?!切换到Notepad++并不可取,因为Eclipse拥有许多有用的功能(更好的自动完成、自动版本控制等)。

对我来说仍是个谜...


文件 -> 属性 -> 资源 -> 文本编码。但是我没有看到BOM选项.... - DonCallisto
这就是问题所在,我只能使用带BOM的UTF8进行更改,这并没有什么帮助。 - scott
请点击这里 - DonCallisto
2
我现在只能用记事本++手动转换每个文件了... - scott
2个回答

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

我发现使用“编辑”->“设置编码”更容易。将其设置为ISO,删除字符,保存,然后将其设置回UTF-8。无需关闭和重新打开文件。 - Matt Cosentino

7
据我所知,只要你的工作区(或文件类型)设置为UTF-8,新文件就不会创建BOM,但旧的BOM(在其他编辑器中创建的)将根据打开文件的编辑器进行维护或甚至显示(PHP编辑器与PHP+HTML编辑器等)。
如果您的文件中有随机的BOM,则很可能是您团队中的某个人使用了默认带BOM的不同编辑器(比如Dreamweaver!)。每当这个人创建一个新文件时,BOM都会被插入并由您和他的编辑器维护(但如果其中一个人删除它,它也没问题)。
如果您熟悉bash,建议使用以下脚本批量修剪BOM:
sed '1 s/\xEF\xBB\xBF//' < input > output
BOM Magic来源:http://thegreyblog.blogspot.com/2010/09/shell-script-to-find-and-remove-bom.html

好的解决方案,网站上发布的bash非常有用,因为它可以一次处理多个文件。 - рüффп

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接