TapCub 正式上线:统计、分析、客服一个平台免费用

免费工具 HTML 转义 / 反转义(HTML 实体编码解码)

想在网页上展示一段代码而不让浏览器执行它,就要把 < & 这些字符转义;拿到满是 &lt;、&quot;、&nbsp; 的文本,就要反转义回来。解码按 HTML 标准来,连浏览器「将就」的写法也照样处理,并逐条指出来。

  • 转义、反转义
  • 命名实体全表
  • 本地处理,不上传
转换器

HTML 转义或反转义

示例是一段要在文章里当代码展示的链接。再点「示例:被转义的统计代码」看看:统计代码粘进富文本编辑器被转义了,所以一直没有执行。

整个框一起转换。

结果
&lt;a href=&quot;/pricing?plan=pro&amp;utm_source=公众号&quot;&gt;查看「专业版」价格 &amp; 套餐&lt;/a&gt;

实体数

8

这次转换了多少处。

转换前字符数

61

转换后字符数

91

出现的实体

同一个实体只列一次,按出现顺序。

实体字符码点次数
&lt;<U+003C2
&quot;"U+00222
&amp;&U+00262
&gt;>U+003E2
全部在你的浏览器里计算。这里输入的任何内容都不会上传,TapCub 也不会保存。

分享这组输入:数值写在链接的 # 后面,不会发到服务器。

版本 v1.0更新于 更新记录

结果怎么看

HTML 转义字符各是什么意思

HTML 实体(规范里叫字符引用)是一种写字符的办法:有些字符直接写会被当成标签,有些不好打出来。

必须转义的几个字符

& 是实体的开头,< 是标签的开头,在正文里都必须转义;> 习惯上一起转。放进属性值时,还要转义包着它的那种引号:&quot; 或 &#39;。

命名实体和数字实体

&copy; 这样的命名实体好读;&#169;、&#xA9; 这样的数字实体什么字符都能写,汉字和 emoji 没有名字,只能用数字。

浏览器的「将就」

&amp、&copy 等 106 个老名字不带分号也能解;&#150; 会被读成破折号「–」。检查结果会逐条列出这些情况,方便你改源头。

转义了两次

反转义后还看到 &lt;,说明文本被转义了两次:常见的是编辑器转一次、模板又转一次。再反转义一次,然后找出多出来的那一步。

HTML 正文的转义,和网址、JavaScript 字符串、CSS 里的转义规则都不一样,各用各的。链接里的参数请用 URL 编码工具。

怎么用

三步

代码放上网页之前转义;需要看懂时反转义。

  1. 1

    选模式

    要让代码按文字显示,选「转义」;要读懂满是 &…; 的文本,选「反转义」。

  2. 2

    选范围

    普通 UTF-8 网页选「只转 & < > 和引号」就够了,中文不需要转。老系统、邮件模板会把中文弄乱时,选十进制或十六进制。

  3. 3

    看检查结果

    缺分号、拼错的实体名、重复转义都会带行号列出来,改源头而不是改症状。

规则

常用 HTML 转义字符对照表

HTML 标准一共定义了 2,231 个命名字符引用,其中 106 个出于历史原因不带分号也认。任何字符也都可以用十进制或十六进制码点写。

  • 解码取最长匹配:&notin; 是 ∉,&notit; 却是 ¬ 加上「it;」
  • &#0;、代理区和超过 U+10FFFF 的值都换成 U+FFFD;128–159 按 windows-1252 换成对应字符
  • 本页按 WHATWG 的值:&lang; 是 U+27E8,不是 HTML 4 里的 U+2329
  • 属性值里还有一条额外规则(实体名后面紧跟 = 或字母时不解码),本工具不按属性处理
常用字符的命名、十进制、十六进制写法
字符命名实体十进制十六进制说明
&&amp;&#38;&#x26;正文里必须转
<&lt;&#60;&#x3C;正文里必须转
>&gt;&#62;&#x3E;习惯上一起转
"&quot;&#34;&#x22;双引号属性值里要转
'&apos;&#39;&#x27;HTML 4 没有 &apos;
(不换行空格)&nbsp;&#160;&#xA0;不等于普通空格
©&copy;&#169;&#xA9;不带分号也认
—&mdash;&#8212;&#x2014;
中—&#20013;&#x4E2D;汉字没有名字,只能用数字
例子

六个容易解错的输入

每一行都用 Python 的 html.unescape(按 HTML5 规则实现)核对过。

容易出错的实体解码结果
输入解码结果原因
&amp;lt;&lt;转义了两次,解一次还剩一层
&copy2026©2026老名字,分号可省
&notit;¬it;最长匹配到的是老名字 not
&#150;–(U+2013)150 是控制码,按 windows-1252 换算
&#0;�(U+FFFD)空字符一律不允许
&lang;⟨(U+27E8)HTML5 改了这个实体的值

第二到第四行在 HTML 里都算解析错误,只是浏览器悄悄修好了。严格的 XML 解析器会直接报错,所以同一段 HTML 在浏览器里正常,到了 RSS 阅读器或邮件系统里却可能出问题。

常见错误

HTML 转义常见的坑

多数问题是转得太少、转得太多,或者转错了地方。

把代码粘进富文本编辑器

可视化编辑器会转义你粘贴的内容,<script> 变成 &lt;script&gt;,页面上显示成文字。统计代码、客服代码要粘到「HTML / 自定义代码 / 页头代码」这类地方。

转义了两次

数据库里存的已经是转义后的文本,模板输出时又转一次,读者就会在页面上看到 &amp;。原文存原文,只在输出时转义一次。

以为转义了就不会有 XSS

HTML 转义只保护正文和带引号的属性。放进 href="javascript:…"、<script> 里或不带引号的属性时,转义了也不安全。

把 &nbsp; 当普通空格

从网页上复制来的活动名、事件名里夹着不换行空格,看着一样,统计里却是另一行,精确匹配的筛选也对不上。

常见问题

HTML 转义常见问题

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

HTML 转义是什么?

把在 HTML 里有特殊含义的字符写成实体,让浏览器按文字显示而不是当标签解析。最常见的是 < 写成 &lt;、& 写成 &amp;、" 写成 &quot;。反过来把实体还原成字符,叫反转义或实体解码。

HTML 转义字符有哪些?哪些必须转?

正文里必须转 & 和 <,> 一般一起转;属性值里还要转包着它的引号。UTF-8 网页里的中文、emoji、带音标的字母都不需要转。完整的命名实体有 2,231 个,常用的见上面的对照表。

&#39; 和 &apos; 有什么区别?

都是单引号。&apos; 来自 XML,到 HTML5 才进 HTML,很老的解析器不认;&#39; 哪里都认,所以本工具用它。

统计代码为什么在页面上显示成了文字?

它被转义了,通常是富文本编辑器干的,浏览器收到的是 &lt;script&gt; 而不是标签。可以在这里反转义确认,然后把原始代码粘到网站的 HTML、页头代码或自定义代码里,而不是可视化编辑器里。

&nbsp; 是什么,为什么会出问题?

&nbsp; 是不换行空格(U+00A0),排版上用来防止断行。它和普通空格(U+0020)不是同一个字符,从网页复制到表格、活动名、搜索框里,常常导致「看着一样却匹配不上」。

转义了 HTML 就能防 XSS 吗?

放在 HTML 正文和带引号的属性里时,转义是正确的防护。但放进网址、内联脚本、样式或 onclick 这类属性时不够,各有各的编码规则;更稳妥的是用会按上下文自动转义的模板。

我粘贴的内容会被上传吗?

不会,全部在浏览器里处理。分享链接把文本放在网址 # 后面,浏览器不会把这部分发给服务器,但拿到链接的人都能看到。

更新记录

更新记录

这个工具的新功能、修复和数据更新,最新的在前。

  1. · v1.0

    首次上线首次上线。

缺功能或发现错误?告诉我们,常被提到的会排进下次更新。 全部工具更新

下一步

装好脚本,看着它跑起来

一段异步脚本同时管统计和在线客服,装好后大约一分钟内就能在实时访客里看到自己。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie