12

经过一番头痛后,我发现使用设置编码 UTF8(带有 BOM)的 eclipse 会导致错误。当您使用包含导致网页的标题在 chrome 的正文中呈现时,它会导致添加空格。

IE。在 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 中解决这个问题?!切换到 notepad++ 是不可取的,eclipse 中有太多有用的好功能(更好的自动完成、自动版本控制等)。

对我来说是个谜...

4

2 回答 2

9

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

于 2015-07-28T07:56:25.537 回答
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

于 2013-03-04T11:07:08.057 回答