当我们没有指定<meta charset ="utf-8">时会发生什么?

Pan*_*har 26 html html5

当我们不指定时会发生什么<meta charset="utf-8">?在HTML文档的HEAD中?

Juk*_*ela 19

无论是否meta存在此标记,浏览器和用户代理将首先查看HTTP标头以在那里查找编码信息.实际上,他们甚至会在荣誉用户设置之前进行BOM嗅探,如8.2.2.1 确定 HTML5 CR中的字符编码一节所述 - 在本期中,这是对现实的描述,而不仅仅是提议的规范.

所以答案真的是"它取决于".在许多情况下,meta标记被忽略,因此省略它不会产生任何影响,除非在本地保存HTML文档的情况下(以便丢失HTTP标头).在许多其他情况下,它不会被忽略,但如果省略,浏览器无论如何都会推断出正确的编码.在某些情况下,标签恰好是使浏览器使用正确编码的唯一因素,省略它将导致错误的数据解释,通常使得字节在windows-1252编码中被解释.重要的是取决于实际内容.

  • 你能举一个例子来说明省略会产生影响吗? (2认同)

Dar*_*rov 14

当我们不指定时会发生什么<meta charset="utf-8">?在HTML文档的HEAD中?

用户代理查找从服务器发送的Content-Type响应HTTP标头:

Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

如果Content-Type标头未指定charset依赖于用户代理,则可能会发生不同的事情.某些用户代理可能会尝试使用启发式方法通过分析响应流中寻找已知编码的一些字节来猜测正确的字符集.如果失败,您可能会在您使用ASCII范围之外的字符的网页中找到几个问号或奇怪的符号.

  • 这个答案有点误导,因为总是首先检查HTTP头. (3认同)

Pud*_*dle 5


对于诸如: \n之类的字符\xe2\x86\x91\xe2\x86\x92\xe2\x86\x93\xe2\x86\x90

\n\n

它们将显示为:
\n\xc3\xa2\xe2\x80\xa0\xe2\x80\x98\xc3\xa2\xe2\x80\xa0\xe2\x80\x99\xc3\xa2\xe2\x80\xa0\xe2\x80\x9c\xc3\xa2\xe2\x80\xa0

\n\n

除非您使用 UTF-8 格式:
\n<meta charset="UTF-8">

\n