HTML 实体编解码

转义特殊字符、把实体还原成字符、从 HTML 里提取纯文本,并提供实时预览确认效果。全部在浏览器本地完成。


    
渲染预览(下方内容按 HTML 真实渲染,用于确认转义是否正确)

它如何工作

转义时用字符替换&<> 换成实体,顺序上必须先处理 &,否则会把刚生成的 &lt; 再次转义成 &amp;lt;——这是手写转义最常见的错误,顺序错了整段输出就全废。

反转义采用双阶段:先识别 &#39; 这类数字实体并按十进制/十六进制还原成对应码点,再处理 &nbsp; 这类命名实体。使用 innerHTML 直接赋值——那样会把内容里的 <script> 一并执行,存在 XSS 风险。

「提取纯文本」先用 DOMParser 把 HTML 解析成文档树(DOMParser 不会执行脚本),再取 textContent,因此结果干净且安全。

常用实体对照

字符命名实体数字实体说明
&&amp;&#38;与号,必须最先转义
<&lt;&#60;左尖括号,防止被当作标签起始
>&gt;&#62;右尖括号
"&quot;&#34;双引号,属性值内必须转义
'&apos;&#39;单引号,HTML5 起才支持命名写法
空格&nbsp;&#160;不换行空格,不是普通空格

常见问题

转义后再反转义,能完全还原吗?

对标准实体可以。但要注意 &nbsp; 还原后得到的是 U+00A0(不换行空格),它看起来像空格但不是,在代码里比较字符串时会不相等——这是排版复制粘贴后排查不出问题的常见原因。

为什么转义要勾选引号?

只有在把内容放进 HTML 属性值(如 title="...")时才需要转义引号。放在元素文本内容里的话,转义引号反而会让页面上真的显示出 &quot; 这种字符。

「提取纯文本」和「去除标签」有什么区别?

前者会解析实体、保留文字语义(例如 &lt; 会变成真正的 < 字符);后者只是按正则粗暴地删掉尖括号之间的内容,速度快但遇到不规则 HTML 容易出错。推荐用前者。

开源仓库与下载
← 返回知办库首页
GitHub 开源源码 Gitee 开源源码(国内) 夸克网盘下载 百度网盘下载
夸克提取码:3339 | 百度提取码:u0cz
查看绿色版下载页 →