1

我使用 notepad++ 和 utf-8 编码来编写 php 代码。我遇到了我的标题被向下移动的问题。我发现 Firebug 在 之后显示双空格<body>,所以如果我删除空格,标题设置到他的位置。但是当我按“Ctrl+U”查看 HTML 代码时,我看到一切正常:

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

如果我选择 Encode\Conver to ANSI issue dissapears,那么重要的一点。我不能使用 ANSI,因为 DB 使用 UTF8,并且记录有西里尔字符。

问题:

<body>

    <div id="header">
4

2 回答 2

2

使用十六进制编辑器检查文件。介于两者之间<body><div...必须有一些“不可见”(例如“空白”或“不可见”)字符。可以在此处找到十六进制编辑器列表。

但是,对于本示例,最快的解决方案是简单地保存为 ANSI/ASCII,重新打开并再次保存为 UTF-8。那应该摆脱隐形字符,或者至少在重新打开时显示一些“奇怪”字符。

编辑 我查看了您在问题中粘贴的问题;我认为角色因复制/粘贴而丢失,因为我没有看到任何奇怪的东西: 在此处输入图像描述

(请注意,0Dand0A是回车/换行符,或“普通(windows)换行符”,20是普通空格)


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

此外,BOM有时是麻烦的根源,但这并不能解释(AFAIK)为什么中间有空格<body><div...因为 BOM 是文件中的前几个字节。如果您使用其中包含 BOM 的多个 PHP 文件(使用include()/require()等)来构建最终输出,那么其中一个文件可能包含不需要的(?)BOM。

于 2013-03-27T11:30:48.817 回答
1

UTF-8 without BOM在notepad++中,使用PHP时必须严格使用。UTF-8不幸的是,在notepad ++中意味着BOM将被添加到每个PHP源文件中。

因为 PHP 是不经意地编码的,所以它只会将其视为要回显的文字内容。这将导致各种问题,例如headers already sent错误和您的文档在某些浏览器中进入怪异模式。

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

于 2013-03-27T12:22:16.603 回答