2013-03-27 35 views
1

我使用notepad ++和utf-8编码写入php代码。我遇到了一个问题,即我的标题向下移动。我在<body>之后创建了Firebug显示双倍空间,所以如果我删除空白空间,标题设置到他的位置。但是,当我按“Ctrl + U”,查看HTML代码,我看这就是一切正常:用双空格标记生成的HTML <body>

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
<body> 
    <div id="header"> 
     <div class="container"> 
     <img alt="" src="/../images/logo.png" class="active"> 
     </div> 
    </div> 
</body> 
</html> 

如果我选择编码\ CONVER到ANSI问题自败的重要的一点。 我不能使用ANSI作为数据库使用UTF8和记录有西里尔字符。

问题:

<body> 

    <div id="header"> 

回答

2

使用十六进制编辑器来检查文件。在<body><div...之间的某处必须有一些“不可见”(例如'whitespace'或其他'隐形')字符。可以找到一个十六进制编辑列表here

尽管在这个例子中,最快的解决方案是简单地保存为ANSI/ASCII,重新打开并保存为UTF-8。这应该摆脱无形的角色,或者至少在重新开放时显示一些“怪异”的角色。

编辑 我看了一下你在问题中粘贴的问题;我觉得性格得到了由复制/粘贴失去了,因为我没有看到任何奇怪: enter image description here

(注意:0D0A是回车/换行,或“normal (windows) newlines”和20是一个正常的空间)


我只记得:我确实看到过这个问题,一次或两次从jsFiddle复制代码;它的“格式化程序/语法高亮显示”似乎(或似乎)有时会添加一些不需要的字符。例如,请参阅this question

此外,BOM有时是祸水,但不会解释(据我所知)为什么空间<body><div...之间因为BOM是文件中的第几个字节。如果您使用其中包含BOM的多重PHP文件(使用include()/require()等)来构建最终输出,那么其中一个文件可能包含不需要的(?)BOM。

+0

谢谢我使用了XVI32编辑器。我在<!DOCTYPE html>之前创建了由FF BB BF编码的字符。删除它们后,我得到了我想要的。非常感谢 ! – user2027175 2013-03-27 11:59:07

1

在记事本++中,使用PHP时必须严格使用UTF-8 without BOM。记事本++中的UTF-8不幸意味着每个PHP源文件都会附带一个BOM表。

因为PHP编码是不经意的,所以它会把它当作文字内容来回应。这将导致各种问题,如headers already sent错误,并且您的文档在某些浏览器中进入怪癖模式。

仅使用UTF-8 without BOM编码比手动删除由UTF-8创建的BOM要容易得多。

+0

谢谢! 我还发现有趣的文章http://www.w3.org/International/questions/qa-byte-order-mark.en.php – user2027175 2013-03-27 12:55:08