Skip to content

字符实体与编码 ​

HTML 源码同时承载结构和文字。<、>、& 等字符可能被解析器当成标记语法,因此需要实体或正确的文本节点边界;字符编码则决定文件字节怎样还原成字符。两者相关,但不是同一个问题。

html
<p>条件是 <code>a &lt; b</code>,作者写的是 A&amp;B。</p>
<p>版权符号:&copy; 2026</p>

&lt; 和 &amp; 让字符以文本形式出现,避免被误认为标签或实体开始。现代页面通常使用 UTF-8 直接保存可读文字;实体适合表达会与 HTML 语法冲突的字符或需要明确命名的符号,不应该把所有中文都写成数字实体。

用户输入和服务端生成 HTML 还涉及转义与注入边界。把不可信字符串直接拼进 HTML,实体编码只能解决部分文本上下文,不能代替正确的输出编码和安全策略。

实验与练习 ​

分别显示 a < b、A&B 和一段带中文的文字,比较直接写法与实体写法在源码和页面中的差异。再把一个不可信字符串作为文本节点插入页面,和作为 innerHTML 插入页面,说明为什么两种 API 的安全边界不同。

常见错误 ​

  • 在文本中直接写未转义的 < 或 &。
  • 把字符编码问题当成字体缺失问题。
  • 把实体编码当成所有 HTML 注入场景的安全解决方案。
  • 为了“统一”把所有非 ASCII 字符改写成难读的数字实体。

本章回顾 ​

现在可以从文档类型、根元素、元信息和语义结构一路解释到文本、列表、链接、媒体、交互、表格、表单、全局属性和编码。下一章会在这棵文档树上建立 CSS 选择、层叠和继承规则。

进入第二章:CSS 选择器与层叠

练习 ​

  1. 用最小输入复现“字符实体与编码”的成功路径,并记录可观察结果。
  2. 改变一个时序、数据或宿主条件,解释结果为何变化。
  3. 删除清理、校验或降级分支,写出能证明缺陷的断言。

查看本节答案

用心记录每一步成长