Php eclipse中无BOM编码的utf8

Php eclipse中无BOM编码的utf8,php,eclipse,byte-order-mark,Php,Eclipse,Byte Order Mark,经过一些头痛之后,我发现eclipse使用集合编码UTF8(带BOM)会导致错误。它会导致在使用include时添加空格,从而使网页的标题在chrome中呈现在正文中 当然,在index.php上,课程前后没有间隙 <?php include_once('header.php'); ?><body>test</body> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht

经过一些头痛之后,我发现eclipse使用集合编码UTF8(带BOM)会导致错误。它会导致在使用include时添加空格,从而使网页的标题在chrome中呈现在正文中

当然,在index.php上,课程前后没有间隙

<?php include_once('header.php'); ?><body>test</body>
<!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>
测试
和header.php(当然也没有间隙)


考试题目
然后,测试标题出现在主体中(不是在view source中,而是在chrome的控制台中)。这会导致页面顶部出现间隙

在notepad++中打开index.php和header.php,并将编码更改为UTF8而不使用BOM即可解决问题。我如何在Eclipse中修复此问题?!切换到notepad++是不可取的,eclipse中有太多有用的好特性(更好的自动完成、自动版本控制等)


对我来说是个谜…

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

如果您的文件中有随机BOM表,可能是因为您的团队中有人在默认情况下使用其他编辑器打开BOM表(您好,Dreamweaver!)。每当此人创建一个新文件时,BOM表都将被插入并由您和他的编辑器维护(但如果您中的一位删除了它,就可以了)

如果您精通bash,我建议您使用以下脚本批量删除bom:


sed'1s/\xEF\xBB\xBF/'output



BOM魔法源:

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

文件->属性->资源->文本编码。但是我看不到tge BOM选项…这就是问题所在,我只能使用BOM更改为UTF8,这没有帮助..看一下:(因此,我坚持用notepad++手动转换每个文件,然后…很好的解决方案,网站上发布的bash非常有用,因为它可以在一行中处理许多文件。我发现使用编辑->设置编码更容易。将其设置为ISO,删除字符,保存,将其设置回UTF-8。无需关闭并重新打开文件。