【问题标题】:Header displaced after PHP implementation (UTF-8 BOM)PHP 实施后标题移位(UTF-8 BOM)
【发布时间】:2015-04-19 00:09:57
【问题描述】:

在我加入他们之前,我的公司有一个不错的网站,但多年来一直外包且未受影响。加入后,我在空闲时间慢慢改进它。

本周我重写了所有页面上相同的页眉/左列/页脚,以便我可以使用 PHP 将它们包含在内,并避免在我想更改某些内容时逐个修复它们(以及其他好处) .

我不擅长弄乱 .htaccess 或 PHP,但我真正改变的只是:

  1. 允许 PHP 通过添加到 .htaccess 来处理 .html 文件:

AddType application/x-httpd-php5 .html .htm

  1. 我变了:

<?xml version="1.0" encoding="UTF-8"?>

收件人:

<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";?>

避免

  1. 将三个常用元素(页眉、左列和页脚)复制并粘贴到单独的 HTML 文件中,并使用:

<?php include '_header.html';?>

  1. 稍微更改了左上角的文字,但这不会影响任何内容。

在加载两个页面(PHP 包含和纯 html)后查看源代码,它们看起来相同。 我没有更改任何 CSS,因此它们使用相同的代码。

但由于某种原因,切换到 PHP 包含版本会在页面顶部添加一个空行。

这是当前(纯 XHTML)版本: http://www.akidc.co.jp/index.html 供参考的新文件是: ((删除过时的链接)) (在我一次上传所有新页面之前,我无法更改 .htaccess,否则

我包含的头文件位于 _header.html

请帮我解决差距^_^

【问题讨论】:

    标签: php html .htaccess utf-8 byte-order-mark


    【解决方案1】:

    对源代码运行 diff,您会立即注意到这里发生了什么。

    在 PHP 版本中,U+FEFF 位于 <div id="header" ...> 之前。这被浏览器解释为内容,因此它会尝试显示此内容。

    为了解决这个问题,请确保您的所有源代码都以 UTF-8 格式存储。

    顺便说一下,这里是差异:

    看到<feff>了吗?

    现在,看看你的页面元素。这是你以前的:

    这就是你在 PHP 版本中得到的:

    注意到我突出显示的附加“”块吗?

    【讨论】:

    • ugg,几天前,当我第一次上传东西并将所有内容重新保存为 UTF-8 时,我注意到事情并没有默认为 UTF-8,然后清除了我明显的问题......也许是什么虽然被抛在了后面......老实说,我正在使用基本的 Windows 记事本来写这一切,所以......我会寻找更好的东西。我仍然看不到我那端的feff。感谢您找到它!
    • @KylePostlewait:试试更强大的编辑器,比如notepad2。对于差异,您可以使用WinMerge,我很确定它会显示不可打印的字符。您使用的版本控制附带的 diff 工具应该也能很好地完成这项工作。
    • @MainMa 谢谢你的建议,notepad2 看起来不错,有很好的视图选项。我仍然找不到找到+编辑多余代码的方法吗? notepad2 中也没有显示。?
    • @KylePostlewait:你不知道。相反,请查看所涉及的 PHP 文件的编码。其中一个文件将显示为 UTF-8+BOM 而不是 UTF-8。然后你所要做的就是双击notepad2中的编码并将其更改为UTF-8。
    • @MainMa 再次感谢您的回复。我下载的notepad2副本似乎没有为BOM提供任何选项,但是notepad++有没有BOM的UTF-8,所以我使用了它,它现在可以工作了!!!谢谢!
    猜你喜欢
    • 2014-03-10
    • 1970-01-01
    • 2011-06-21
    • 2018-10-28
    • 2021-12-21
    • 2011-07-21
    • 2017-07-20
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多