首页/开发/正则与编码速查/十六进制实体与字符互转

十六进制实体与字符互转

HTML 十六进制数字实体形如 中,本质是码点的十六进制写法,可与十进制实体、命名实体混用;双向转换按码点运算即可,注意至少补齐 4 位、避免二次编码,且 script/style 等原始文本元素内不做实体解码。

正则与编码速查开发更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​​​‌​‌‌​‌​‌‌​‌​​​​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​‌​​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

十六进制数字实体的双向转换

HTML 数字实体的十六进制形式是 &#x 加码点十六进制再加分号,例如中文「中」写作 中。它本质上是把码点用十六进制写出来,因此正反向转换都可以按码点运算完成,不需要实体表。同一份内容通常还混着命名实体与十进制实体,转换工具应能同时处理三种形式。

基本信息

十六进制形式中 前缀 &#x,后缀分号,十六进制数字大小写均可
十进制形式中,两种形式的语义完全相同
位数不强制固定位数,惯例补足 4 位,BMP 以上补到 5 到 6 位
范围有效码点为 U+0000 到 U+10FFFF,其余按规范替换
解析时机由 HTML 解析器在词法阶段解码,脚本与样式元素内不解码

典型使用场景

  • 把一串字符转成实体,确保任何编码环境都能原样显示
  • 从网页源码里还原被实体化的中文与符号
  • 生成测试样例,验证解码实现是否覆盖十六进制与十进制两种形式
  • 处理只允许纯 ASCII 的通道,把中文临时实体化
  • 排查显示成 &#x 开头的字面量:说明解码少走了一次

转换脚本示例

转换脚本示例
import html
# 解码:命名、十进制、十六进制三种形式一次处理
html.unescape('中中&')   # '中中&'
# 反查:单个字符的码点
hex(ord('中'))                          # '0x4e2d'
# 编码:补足 4 位,高级字符补到 5 到 6 位
def to_hex_entity(ch):
    return '&#x%04X;' % ord(ch)
to_hex_entity('中')                     # '中'
# 整串转换:先按码点遍历,避免代理对问题
''.join(to_hex_entity(c) for c in '中文😀')

实体形式对照

字符命名实体十进制十六进制
&&&&
<&lt;&#60;&#x3C;
中无命名形式&#20013;&#x4E2D;
不换行空格&nbsp;&#160;&#xA0;
笑脸无命名形式&#128512;&#x1F600;
实体只在常规文本、属性值与部分上下文里被解码;script 与 style 属于原始文本元素,写在那里的 &#x3C; 不会被还原成尖括号,这也是脚本内注入写法与标签内不同的原因。
用「过滤实体」当安全手段并不可靠:攻击者可以直接写真实字符,也可以用十进制、十六进制、缺分号等写法绕过匹配。正确做法是按上下文编码输出,而不是靠黑名单删实体。

易错点

  • 转义与反转义方向写反,导致数据库里存的是 &#x4E2D; 字面量,前端又解一次变成别的内容
  • 补位不足:把码点写成 &#x4e2; 这类短写后,某些工具链会解析出不同字符,惯例是至少补齐 4 位
  • 对已经是实体的文本再编码一次,& 优先被转义成 &amp;,最终显示成双重编码
  • 按 UTF-16 码元而不是码点遍历字符串,emoji 会被拆成两个实体,还原后可能变成两个怪字符
  • 在未加引号的属性值里使用会解码出空格或引号的实体,这种写法在 HTML 解析规则下本身就是非法的

数据来源与参考

  • WHATWG HTML Living Standard:数字字符引用与解析规则
  • MDN:HTML 字符实体引用与数字实体
  • Python 标准库文档:html.unescape 与 ord

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/regex/html-hex-entity-conversion.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​​​‌​‌‌​‌​‌‌​‌​​​​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​‌​​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​