Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是否需要在HTML和PHP中声明内容类型/字符集?_Php_Html_Character Encoding_Dtd - Fatal编程技术网

我是否需要在HTML和PHP中声明内容类型/字符集?

我是否需要在HTML和PHP中声明内容类型/字符集?,php,html,character-encoding,dtd,Php,Html,Character Encoding,Dtd,如果在PHP头中声明了内容类型和字符集,是否有理由在通常的HTMLDTD中再次声明它们 //这里 //这里呢 ... 如果在标题中发送字符集,则无需在HTML标记中重复该字符集 最好将此信息发送到一个位置(干式原则),就好像字符集冲突一样(即,头与UTF-8和元与iso-8859-1),浏览器可能会进入怪癖模式 尽管如此,一些自动化工具(web scraper)可能不会查看页眉,而只能通过meta标记推断页面编码 保持每个页面的页眉和meta标记相同很重要-混合不同的字符集可能会混淆浏览器并导

如果在PHP头中声明了内容类型和字符集,是否有理由在通常的HTMLDTD中再次声明它们

//这里
//这里呢
...

如果在标题中发送字符集,则无需在HTML标记中重复该字符集

最好将此信息发送到一个位置(干式原则),就好像字符集冲突一样(即,头与UTF-8和元与iso-8859-1),浏览器可能会进入怪癖模式

尽管如此,一些自动化工具(web scraper)可能不会查看页眉,而只能通过
meta
标记推断页面编码


保持每个页面的页眉和meta标记相同很重要-混合不同的字符集可能会混淆浏览器并导致显示问题。

如果有人决定保存页面或web scraper:),在HTML源中使用字符集可能会有所帮助。libxml查找meta标记以确定解析标记时要使用的字符集。向您的开发伙伴展示一些web抓取的爱好。

如果您在HTTP头中声明它,那么它将通过代理转码生存下来,并且不会在浏览器中触发“哎哟,我猜错了编码,从顶部重新开始解析”的情况

如果您在文档主体中声明它,那么它将在HTTP(或其他具有内容类型头的系统,如电子邮件)之外的访问中生存

如果你在两个版本中都声明了它,那么只要不发生代码转换,你就可以得到两个版本的最佳效果


请注意,如果您不使用UTF-8或UTF-16,那么XML规范要求您在XML prolog中指定它(并且使用XML prolog将触发IE6中的怪癖模式)。

感谢您的快速回答!如果是这样的话,那么基于上述内容的正确标记是什么?我可以删除整个
行吗?@Isaac Lubow-可以删除
meta
标记,因为它只会从标题中重述字符集。
<?php ob_start( 'ob_gzhandler' );
 header('Content-type: text/html; charset=utf-8'); ?> // here
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> // and here
...