HTML 实体编码 / 解码

即时编码和解码 HTML 实体。支持命名实体、十进制和十六进制编码。免费在线工具,在浏览器中处理。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
选择「编码」或「解码」。停止输入 0.3 秒后按所选方向转换。切换方向会立即转换当前输入,并取消等待中的转换。「清除」保留所选方向。
「编码」替换 &、<、>、双引号和单引号。每个非 ASCII 码点生成一个十进制引用,包括表情符号。空格、制表符和换行保持原样。
「解码」使用浏览器的 textarea 解析器读取命名、十进制和十六进制引用,标签保持为文本。部分旧名称可省略分号;英文状态只统计以分号结尾的引用。
复制当前显示的完整输出。复制失败时,请选中输出后手动复制。

编码结果用于 HTML 文本和带引号的属性。JavaScript、事件处理器、CSS 和 URL 需要各自的转义规则。

速查表 — 常见 HTML 实体
CharacterNameEntityDecimalHex
&Ampersand&amp;&#38;&#x26;
<Less-than&lt;&#60;&#x3C;
>Greater-than&gt;&#62;&#x3E;
"Double quote&quot;&#34;&#x22;
'Apostrophe&apos;&#39;&#x27;
Non-breaking space&nbsp;&#160;&#xA0;
©Copyright&copy;&#169;&#xA9;
®Registered&reg;&#174;&#xAE;
™Trademark&trade;&#8482;&#x2122;
—Em dash&mdash;&#8212;&#x2014;
–En dash&ndash;&#8211;&#x2013;
«Left guillemet&laquo;&#171;&#xAB;
»Right guillemet&raquo;&#187;&#xBB;
展开表格,查看常见命名、十进制和十六进制引用。这些条目供查阅;「编码」对非 ASCII 字符使用十进制引用。
阅读完整使用指南 HTML 实体编码完全参考:特殊字符转义与解码指南
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

示例:编码与解码

下面的输出都由本工具的编码函数和与浏览器相同的解析规则算出。

在网页上显示一段代码

想把 <div class="box"> 作为文字显示在文章里,选择 编码 后输入它,得到:

&lt;div class=&quot;box&quot;&gt;

把这段结果放进 HTML,浏览器显示的就是原来的标签文字,不会生成一个 div。

解码后台接口返回的商品文案

有的内容管理系统保存文案时会把引号和间隔号写成命名实体。接口返回 &ldquo;双十一&rdquo;活动 &middot; 满 300 减 40,选择 解码 后得到:

“双十一”活动 · 满 300 减 40

状态行显示 Decoded — 3 entities converted.:&ldquo;、&rdquo; 和 &middot; 各算一个。

带中文的标签文字

输入 <b>新品</b>“限时”特价 & 包邮 并选择 编码,输出为:

&lt;b&gt;&#26032;&#21697;&lt;/b&gt;&#8220;&#38480;&#26102;&#8221;&#29305;&#20215; &amp; &#21253;&#37038;

状态行是 Encoded — 15 characters converted.。尖括号和 & 换成了名称,每个汉字和中文引号都换成了十进制数字。如果只是想在 UTF-8 页面里安全地显示这句话,汉字其实不用编码,见下一节。

表情符号只占一个引用

下单成功 🎉 编码后是 &#19979;&#21333;&#25104;&#21151; &#127881;。🎉 的码点是 U+1F389,十进制 127881,只写成一个引用。有些编码器按 UTF-16 码元处理,会写出两个代理项数字,浏览器把它们解析成两个替换字符 �。

中文要不要编码

W3C 的《Using character escapes in markup and CSS》建议页面使用 UTF-8,普通文字直接写字符,并举例说「你好」这样的中文不需要转义;必须转义的只有 <、>、&,以及属性值里与外层相同的引号。

本工具的「编码」不区分页面编码,会把 U+007F 以上的每个字符都写成十进制引用。这样输出全是 ASCII,适合送进不支持 UTF-8 的旧模板或邮件系统,代价是体积变大:「你好」在 UTF-8 下是 6 字节,编码后的 &#20320;&#22909; 是 16 字节,正文越长差距越明显。同一份 W3C 文档也提到,这种写法会让源代码难读、难维护。所以在 UTF-8 的页面里,只需要处理那几个语法字符;中文、全角标点和表情符号保持原样即可。

解码按什么规则读

「解码」把输入交给浏览器自己的 HTML 解析器(写入一个 textarea 的 innerHTML 再读出文字),只替换字符引用,输入里的标签不会被创建或执行。结果遵循 HTML 标准的字符引用规则:

  • HTML 名称表里的全部名字都能识别,十进制和十六进制写法也都能识别。
  • 部分旧名称可以省略分号:&yen1,980 解码为 ¥1,980。状态行只统计以分号结尾的引用,这一例显示为 0 个,但内容已经转换。
  • &#128; 到 &#159; 按 Windows-1252 解释,&#128; 得到 €;&#0; 和代理项数字变成 U+FFFD。

限制

  • 编码结果只用于 HTML 正文和带引号的属性值。放进 <script>、事件处理器、CSS 或 URL 时,要用对应语境的转义;JavaScript 和 JSON 字符串可以用字符串转义 / 反转义,查询参数用 URL 编码 / 解码。
  • 解码只做一次:&amp;lt; 解码为 &lt;,不是 <。处理被编码了两次的文字时,把输出再放回「输入」并保持「解码」。
  • 「编码」从不输出 &copy; 这类命名实体,下面的表格只供查阅。
  • 状态行在所有语言版本中都显示英文。

常见 HTML 实体

字符实体名称十进制说明
&&amp;&#38;与号
<&lt;&#60;小于号
>&gt;&#62;大于号
"&quot;&#34;双引号
'&apos;&#39;单引号
(不换行空格)&nbsp;&#160;不换行空格
©&copy;&#169;版权符号
“&ldquo;&#8220;左双引号(中文引号也用它)
”&rdquo;&#8221;右双引号(中文引号也用它)
·&middot;&#183;间隔号
¥&yen;&#165;人民币 / 日元符号
—&mdash;&#8212;长破折号

FAQ

什么是 HTML 实体?

HTML 实体(字符引用)是代表一个字符的代码。例如 < 写成 &lt;,浏览器就不会把它当成标签的开头;© 可以写成 &copy; 或 &#169;。

什么时候需要编码 HTML 实体?

把用户输入的文字或代码片段放进 HTML 正文或带引号的属性值时需要编码。在这些位置转义 <、>、& 和引号,可以避免页面结构被破坏和 HTML 注入(XSS)。编码结果只适用于 HTML:JavaScript 字符串、事件处理器、CSS 和 URL 各有自己的转义规则。

命名实体、十进制实体和十六进制实体有什么区别?

命名实体使用 HTML 名称表里的名字(&amp;),十进制实体写 Unicode 码点的十进制值(&#38;),十六进制实体写十六进制值(&#x26;)。三种写法代表同一个字符,「解码」都能读取。「编码」只对 &、<、> 和双引号输出名称,其他字符一律输出十进制引用。

我的数据会发送到服务器吗?

不会。转换在浏览器标签页中进行,输入的文字不会发送到服务器,也不会保存到浏览器存储。页面的统计只记录使用事件(工具名和切换到的方向),不包含文字内容。

中文需要编码成实体吗?

在 UTF-8 页面里不需要,W3C 的说明也写明「你好」这样的普通文字无需转义。本工具的「编码」会把每个汉字转成十进制引用,「你好」变成 &#20320;&#22909;,UTF-8 下从 6 字节变成 16 字节。只需要转义的是 &、<、> 和属性里的引号。