Jul*_*sen 2 php html5 header utf-8
我正在尝试优化我的框架处理HTML5页面生成的方式.现在,我所做的是<meta charset="utf-8"/>在<head>标签之后插入一个权利,因此它是第一个要指定的元素(所以当我传递<title>标签和其余页面元素时,它已被定义为以UTF-8编码).
问题是我正在阅读一些关于网站性能优化的书籍,其中大多数建议通过Content-type声明来指定编码,而不是插入<meta>块.
关于字符编码检测的W3C文档(第8.2.2.1节)基本上说,如果用户通过用户代理声明了对内容类型的覆盖,则HTTP头优先于任何显式声明EXCEPT.
然而,W3C验证器(这就是我用来调试我的HTML代码输出的原因)并没有抱怨,但警告我没有<meta charset="utf-8"/>阻止,因此鼓励我把它(它说它特别推荐如果渲染的页面是被保存,但情况并非如此,但仍然......让我感到困惑.
问题是......如何确保页面始终指定为UTF-8编码?我必须声明HTTP标头和<meta>标签或只是HTTP标头吗?
我无法更好地描述它:HTML 5之路:字符编码
这是一个7步算法; 步骤4有2个子步骤,其中第一个有7个分支,其中一个有8个子步骤,其中一个实际链接到一个单独的算法,它本身有7个步骤...它会持续一段时间.它的要点是
"Content-Type"字段中的HTTP"charset"参数.在PHP代码中:
header('Content-Type: text/html;charset=UTF-8');
Run Code Online (Sandbox Code Playgroud)字节顺序标记HTML文档本身中的任何其他数据之前. - 我无法建议实际使用该功能.如果您愿意,只需相应地保存您的文件,但不要期望这些header()呼叫能够完美运行.另一种方法是在PHP中手动输出BOM,即:
echo "\xEF\xBB\xBF"; # UTF-8 BOM
Run Code Online (Sandbox Code Playgroud)
但即使如此,我不能推荐输出BOM,因为这是一个向后兼容的改变输出.这些指南适用于阅读 - 而不是输出.
具有"charset"属性的META声明. - 请这样做,这是一个很好的做法.在HTML 5中:
<meta charset="UTF-8">
Run Code Online (Sandbox Code Playgroud)具有"http-equiv"属性设置为"Content-Type"的META声明和为"charset"设置的值.- 为什么不?!在HTML 5中将是:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
Run Code Online (Sandbox Code Playgroud)这些是要点.我的建议如下:
如果您的目标是完全不知道编码的系统,请使用US-ASCII并将其他所有不作为HTML实体的部分掩盖.
注意:此权利建议用于输出到浏览器而不是用于存储,存储属于您所在区域的内容,确保您在处理商店时了解编码.不要使用HTML实体,例如当你不真正需要它时将HTML写入你的mysql数据库(例如
&在HTML链接中).