【问题标题】:Validation shows <!DOCTYPE html> but can't find BOM character in file验证显示 <!DOCTYPE html> 但在文件中找不到 BOM 字符
【发布时间】:2014-01-18 18:46:59
【问题描述】:

我不想通过此网站的验证: http://www.mundo-satelital.com.ar/ 但我似乎无法修复文件开头的奇怪字符。 W3 验证服务会自动将我的页面检测为 iso-8859-1,尽管我可以从 Firefox 的控制台看到正在传递的标头是 Content-Type text/html; charset=utf-8 并且我的 &lt;head&gt; 包含

<?php header('Content-Type: text/html; charset=utf-8'); ?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

看来我正在寻找的是一个杂散的 BOM 字符,显然即使是 php 包含的一个字符也会导致这种情况,但是我一直在使用 grep -rl $'\xEF\xBB\xBF' *.php 及其变体来搜索任何 .php、.html , .js 或 .css 文件,这可能是罪魁祸首,在消除所有那些积极的文件后,问题仍然存在,有人有什么想法吗?

【问题讨论】:

  • 关于您的问题的问题。文档类型不应该在文件的第一行之前吗?
  • @GertKommer 文档类型应该是 html 输出的第一行。这里就是这种情况。
  • 那是您正在验证的实际文档吗?你能把它缩小到一个产生问题的小而完整的文档,然后发布吗? (我刚刚尝试将您的示例扔给验证器,它告诉我 HTTP Content-Type 正确地是 UTF-8 ...)
  • 我不知道发生了什么但我去睡觉了,第二天早上验证不再有这个问题。我没有解释(建议 W3 使用缓存数据进行分析是没有意义的)但无论如何它现在已经修复了。我给了@Sergiu Paraschiv 的答案,因为他的回答最详细。不过还是谢谢大家!

标签: php html w3c-validation


【解决方案1】:

尝试将它们保存为 UTF-8 非 BOM。 (或者没有 BOM,无论它在你的编辑器中调用什么)。这当然是你的问题。

【讨论】:

    【解决方案2】:

    指定的标头、元标记和文件保存的实际格式是三个完全不同的东西。确保它们都是一样的。此外,现在您的文档类型之前有一个新行字符(如果在 Windows 上可能是字符)。 &lt;?php header ... ?&gt;\n&lt;!DOCTYPE...

    【讨论】:

      【解决方案3】:

      其实我没有看到问题。当您将代码剪切并粘贴到验证器中时,它没有标题。如果您自己设置 HTML5 doctype 和 utf-8。什么都不会改变。你仍然会有 44 个错误。

      【讨论】:

        猜你喜欢
        • 2021-04-13
        • 2016-07-11
        • 2020-05-20
        • 2015-11-18
        • 2015-03-03
        • 1970-01-01
        • 1970-01-01
        • 2020-07-22
        • 1970-01-01
        相关资源
        最近更新 更多