在eclipse中没有BOM编码的utf8

sco*_*ott 12 php eclipse byte-order-mark

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

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

<?php include_once('header.php'); ?><body>test</body>
Run Code Online (Sandbox Code Playgroud)

和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>
Run Code Online (Sandbox Code Playgroud)

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

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

给我一个谜......

小智 8

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


Den*_*huk 7

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

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

如果您对bash-savvy感兴趣,我建议使用以下脚本批量修剪BOM:

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


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