HTML 实体编码 / 解码
即时编码和解码 HTML 实体。支持命名实体、十进制和十六进制编码。免费在线工具,在浏览器中处理。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
示例:编码与解码
下面的输出都由本工具的编码函数和与浏览器相同的解析规则算出。
在网页上显示一段代码
想把 <div class="box"> 作为文字显示在文章里,选择 编码 后输入它,得到:
<div class="box">
把这段结果放进 HTML,浏览器显示的就是原来的标签文字,不会生成一个 div。
解码后台接口返回的商品文案
有的内容管理系统保存文案时会把引号和间隔号写成命名实体。接口返回 “双十一”活动 · 满 300 减 40,选择 解码 后得到:
“双十一”活动 · 满 300 减 40
状态行显示 Decoded — 3 entities converted.:“、” 和 · 各算一个。
带中文的标签文字
输入 <b>新品</b>“限时”特价 & 包邮 并选择 编码,输出为:
<b>新品</b>“限时”特价 & 包邮
状态行是 Encoded — 15 characters converted.。尖括号和 & 换成了名称,每个汉字和中文引号都换成了十进制数字。如果只是想在 UTF-8 页面里安全地显示这句话,汉字其实不用编码,见下一节。
表情符号只占一个引用
下单成功 🎉 编码后是 下单成功 🎉。🎉 的码点是 U+1F389,十进制 127881,只写成一个引用。有些编码器按 UTF-16 码元处理,会写出两个代理项数字,浏览器把它们解析成两个替换字符 �。
中文要不要编码
W3C 的《Using character escapes in markup and CSS》建议页面使用 UTF-8,普通文字直接写字符,并举例说「你好」这样的中文不需要转义;必须转义的只有 <、>、&,以及属性值里与外层相同的引号。
本工具的「编码」不区分页面编码,会把 U+007F 以上的每个字符都写成十进制引用。这样输出全是 ASCII,适合送进不支持 UTF-8 的旧模板或邮件系统,代价是体积变大:「你好」在 UTF-8 下是 6 字节,编码后的 你好 是 16 字节,正文越长差距越明显。同一份 W3C 文档也提到,这种写法会让源代码难读、难维护。所以在 UTF-8 的页面里,只需要处理那几个语法字符;中文、全角标点和表情符号保持原样即可。
解码按什么规则读
「解码」把输入交给浏览器自己的 HTML 解析器(写入一个 textarea 的 innerHTML 再读出文字),只替换字符引用,输入里的标签不会被创建或执行。结果遵循 HTML 标准的字符引用规则:
- HTML 名称表里的全部名字都能识别,十进制和十六进制写法也都能识别。
- 部分旧名称可以省略分号:
¥1,980解码为¥1,980。状态行只统计以分号结尾的引用,这一例显示为 0 个,但内容已经转换。 €到Ÿ按 Windows-1252 解释,€得到€;�和代理项数字变成 U+FFFD。
限制
- 编码结果只用于 HTML 正文和带引号的属性值。放进
<script>、事件处理器、CSS 或 URL 时,要用对应语境的转义;JavaScript 和 JSON 字符串可以用字符串转义 / 反转义,查询参数用 URL 编码 / 解码。 - 解码只做一次:
&lt;解码为<,不是<。处理被编码了两次的文字时,把输出再放回「输入」并保持「解码」。 - 「编码」从不输出
©这类命名实体,下面的表格只供查阅。 - 状态行在所有语言版本中都显示英文。
常见 HTML 实体
| 字符 | 实体名称 | 十进制 | 说明 |
|---|---|---|---|
& | & | & | 与号 |
< | < | < | 小于号 |
> | > | > | 大于号 |
" | " | " | 双引号 |
' | ' | ' | 单引号 |
| (不换行空格) | |   | 不换行空格 |
© | © | © | 版权符号 |
“ | “ | “ | 左双引号(中文引号也用它) |
” | ” | ” | 右双引号(中文引号也用它) |
· | · | · | 间隔号 |
¥ | ¥ | ¥ | 人民币 / 日元符号 |
— | — | — | 长破折号 |
FAQ
什么是 HTML 实体?
HTML 实体(字符引用)是代表一个字符的代码。例如 < 写成 <,浏览器就不会把它当成标签的开头;© 可以写成 © 或 ©。
什么时候需要编码 HTML 实体?
把用户输入的文字或代码片段放进 HTML 正文或带引号的属性值时需要编码。在这些位置转义 <、>、& 和引号,可以避免页面结构被破坏和 HTML 注入(XSS)。编码结果只适用于 HTML:JavaScript 字符串、事件处理器、CSS 和 URL 各有自己的转义规则。
命名实体、十进制实体和十六进制实体有什么区别?
命名实体使用 HTML 名称表里的名字(&),十进制实体写 Unicode 码点的十进制值(&),十六进制实体写十六进制值(&)。三种写法代表同一个字符,「解码」都能读取。「编码」只对 &、<、> 和双引号输出名称,其他字符一律输出十进制引用。
我的数据会发送到服务器吗?
不会。转换在浏览器标签页中进行,输入的文字不会发送到服务器,也不会保存到浏览器存储。页面的统计只记录使用事件(工具名和切换到的方向),不包含文字内容。
中文需要编码成实体吗?
在 UTF-8 页面里不需要,W3C 的说明也写明「你好」这样的普通文字无需转义。本工具的「编码」会把每个汉字转成十进制引用,「你好」变成 你好,UTF-8 下从 6 字节变成 16 字节。只需要转义的是 &、<、> 和属性里的引号。