HTML4 的 标签仅支持 name、http-equiv、content、lang 和 xml:lang 属性,不支持 charset 独立属性;HTML5 新增 charset 属性并推荐置于 最前,同时废止部分 http-equiv 值且禁用自闭合写法。

HTML4 的 标签只支持 name 和 http-equiv 属性
HTML4 中 的合法属性只有 name、http-equiv、content、lang(可选)和 xml:lang(XHTML 场景)。它不支持 charset 作为独立属性,也不允许直接写 —— 这种写法在 HTML4 文档中是无效的,浏览器会忽略或触发 quirks mode。
HTML5 新增 charset 属性,且推荐放在 最前面
HTML5 允许用简写形式声明字符编码:。这等价于旧式写法 ,但更简洁、解析更快、容错更好。
关键点:
- 这个简写 只在 HTML5 中有效;在 HTML4 DOCTYPE 下使用,会导致验证失败,部分老旧工具可能报错
- 必须放在
内尽可能靠前的位置(最好第一行),否则浏览器可能已按默认编码(如 ISO-8859-1)解析了前面的内容,造成乱码 - 它不是“必填项”,但 实际项目中不加等于埋雷:无此标签时,浏览器依赖 HTTP
Content-Type头或自动探测,极易出错
HTML5 没有新增任何强制必填的 标签
不存在“HTML5 规定必须写哪些 ”这种说法。W3C 标准从未把任何 设为强制项。但以下几类在现代实践中几乎成了事实标准:
立即学习“前端免费学习笔记(深入)”;
-
:解决编码问题,几乎所有新项目都加 -
:移动端响应式必需,否则页面在手机上会缩放错乱 -
:SEO 基础项,虽非强制,但缺失会影响搜索结果摘要
注意:viewport 是 HTML5 时代随移动 Web 普及才广泛使用的,但它本身不依赖 HTML5 语法,只是 name 值为新约定,HTML4 文档里也能写,只是语义上没被标准收录。
HTML5 废弃了部分 HTML4 的 http-equiv 值,且校验更严格
比如 http-equiv="expires"、"distribution"、"author" 等在 HTML4 中常见但语义模糊或已被替代的值,在 HTML5 中被明确标记为“不鼓励使用”或完全不规范。浏览器仍可能兼容,但 validator 会警告。
另一个容易忽略的细节: 在 HTML5 中不再允许自闭合写法(即不能写 ),必须写成 (没有结束标签)。虽然多数浏览器能容错,但 XHTML 风格写法在 HTML5 文档中属于冗余且易引发混淆。
真正要盯住的不是“哪些必须写”,而是:字符编码声明是否及时、viewport 是否漏掉、以及旧项目迁移时是否误用了已废弃的
name 或 http-equiv 值。这些地方出问题,调试起来往往比 JS 报错还难定位。










