Html 验证错误:在UTF-8文件中找到字节顺序标记

Html 验证错误:在UTF-8文件中找到字节顺序标记,html,utf-8,w3c-validation,byte-order-mark,Html,Utf 8,W3c Validation,Byte Order Mark,我在一个网站上工作,虽然在Firefox上显示很好,但在IE上我遇到了很多问题。我使用了w3c验证器,我得到了很多奇怪的错误 以下是该网站的链接: 我认为最相关的第一个验证错误是: Byte-Order Mark found in UTF-8 File. The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browse

我在一个网站上工作,虽然在Firefox上显示很好,但在IE上我遇到了很多问题。我使用了w3c验证器,我得到了很多奇怪的错误

以下是该网站的链接:

我认为最相关的第一个验证错误是:

Byte-Order Mark found in UTF-8 File. The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browsers. You may want to consider avoiding its use until it is better supported. 

第1行第1列:未首先看到doctype而找到非空格字符。预期。

我读过关于这个问题的其他文章,所以我尝试用不同的编辑器打开文件(无论如何,我总是使用Vim),但在doctype定义之前,我没有看到任何空格或其他内容。我甚至使用notepad++并使用一个选项来删除bom表,但什么都没有

有什么建议吗


无论如何,

自由文本编辑器有一个十六进制编辑模式,非常方便查看文本文件中的真实内容。

如果使用记事本++,请使用转换为UTF-8而不使用BOM

如果您使用的是php,请确保所有包含的/必需的文件都是ascii或UTF格式的,没有BOM,因为php对非ascii文件的处理不是很好(这一次让我很头疼)

如果不需要utf字符,可以尝试将文件转换为ascii


在您尝试在引号中写入值时

我不会太在意第二个错误,只要您没有删除第一个错误。您的页面确实在作为BOM表的文件开头有额外的四个字节。请删除这四个字节,然后重试。切勿在UTF-8中使用BOM。这是微软的又一个错误。@tchrist-我很高兴看到你通过给这个相当流行的问题添加一个答案来扩展你的观点。@Davidr这有点没有希望了。UTF-8没有BOM表。微软决定像人们把“Unicode”称为编码一样欺骗他们,事实并非如此。同样,他们称之为UTF-8的实际上是UTF-8,在实际数据之前有一个额外的U+FEFF零宽度无中断空间。他们所谓的“没有BOM的UTF-8”是真正的UTF-8。因此,他们让数百万人把所有东西都倒过来,制作出默认情况下不包含他们假装包含的内容的文件。这是一个彻头彻尾的错误。@tchrist-我发现有趣的是,没有一个答案特别提到微软对推广使用UTF-8的BOM有关键影响。然而,维基百科确实引用了微软的文章,我用那篇文章作为我写作的基础。谢谢,这个问题实际上是在另一个php文件中。一个甚至没有在主页中使用的文件。不管怎样,我解决了用记事本++不带BOM保存它的问题。很高兴它有帮助。我曾经在第三级include上遇到过这个问题,我不会忘记这对我有很大帮助。我有一个include文件,它不是没有BOM表的,这就产生了问题。
Line 1, Column 1: Non-space characters found without seeing a doctype first. Expected <!DOCTYPE html>.