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

Isa*_*bow 2 html php dtd character-encoding

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

<?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
...
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 5

如果要在标头中发送字符集,则无需在HTML标记中重复它.

最好在一个地方发送这些信息(DRY原则),好像字符集冲突(即带有UTF-8的标题和带有iso-8859-1的元数据),浏览器可能会进入怪癖模式.

话虽如此,一些自动化工具(网络抓取工具)可能不会查看标题并仅通过meta标记推断页面编码.

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