HTML 实体
HTML 实体是用一串字符来表示某个字符的转义写法,以 & 开头、以分号 ; 结尾。它主要解决两类问题:一是表示在 HTML 语法里有特殊含义的保留字符,二是输入键盘上没有或不可见的字符。实体分两种:命名实体(如 < 表示 <,& 表示 &)和数字实体,后者用字符的 Unicode 码点,十进制写作  、十六进制写作  ,都表示不换行空格。
浏览器解析 HTML 时会把实体还原成对应字符再显示。最需要转义的是 <、>、&:如果把 < 直接写进正文,浏览器会当成标签的开始。所以当你要在页面上原样展示一段代码,或输出用户提交的内容时,必须先转义,否则会破坏页面结构,甚至导致 XSS 注入。常用的预定义命名实体有:
<→<>→>&→&"→"
常见误区是把它和别的编码混为一谈:HTML 实体既不是 URL 编码(%20 那种),也不是 JS/JSON 里的 \u 转义,三者适用场景不同、不能互换。另外并非所有字符都要转义,中文和普通符号直接写即可;在属性值里,则要额外注意转义与外层相同的那种引号。
常见问题
HTML 实体和 URL 编码是一回事吗?
是不是所有特殊字符都必须转义?
不必。正文里通常只有小于号、大于号、和号这三个必须转义;用双引号包裹的属性值里还要转义双引号。中文和大多数普通符号直接写即可,过度转义反而降低可读性。
命名实体和数字实体该用哪个?
显示效果相同,按场景选。命名实体(如表示版权号的名字)可读性好但数量有限;数字实体用 Unicode 码点,能表示任意字符,适合生僻符号。转义那几个保留字符时一般用命名实体更直观。