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中有太多很好的功能是有用的(更好的自动完成,自动版本控制等).
给我一个谜......
据我所知,只要您的工作区(或文件类型)设置设置为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
| 归档时间: |
|
| 查看次数: |
9388 次 |
| 最近记录: |