跳到主要内容

免费 HTML 编解码器

将特殊字符编码为 HTML 实体,或将实体解码回纯文本。即时,在浏览器中完成。

加载后可离线使用
输出:
示例:
纯文本 / HTML
已编码 HTML
输出将显示在此处...
常用 HTML 实体参考
&&
<&lt;
>&gt;
"&quot;
'&#39;
·&nbsp;
©&copy;
®&reg;
™&trade;
€&euro;
—&mdash;
…&hellip;

常见用途

  • 为RSS源编码内容为RSS源项描述编码HTML内容 — RSS 2.0标准所需。
  • 清理用户输入以获得HTML输出在将用户提供的字符串插入HTML之前对其进行编码 — 防止XSS注入攻击。
  • HTML电子邮件的特殊字符编码将&、<、>和©等字符编码为HTML实体,以便在所有电子邮件客户端中正确呈现。
  • 网页显示的用户内容编码在HTML页面中呈现前对用户生成的内容进行编码,防止XSS攻击。
  • XML内容编码为XML文件、RSS源、网站地图和SOAP负载编码特殊字符。

工作原理

这里的 HTML 编码和解码完全在你的浏览器中运行,使用手写的正则替换和硬编码的命名实体查找表——没有第三方编码库,没有服务器往返。对于不常见的命名实体(如 &aacute; 或 &ldquo;)的解码,工具会交给浏览器自身的 HTML 解析器作为零成本的后备方案。

  1. 1
    正则扫描需要替换的字符
    编码时,会对你的输入运行两个支持 Unicode 的正则之一:一个针对约 25 个常见 HTML 特殊字符和特殊符号的模式,或一个捕获 U+007F 以上所有码点的更宽泛模式。每个匹配都逐字符拦截处理。
  2. 2
    查找表或 codePointAt() 生成实体
    输出命名实体时,匹配的字符在硬编码表中查找(例如 & → &amp;,© → &copy;)。输出十进制或十六进制时,String.codePointAt() 获取 Unicode 码点并格式化为 &#NNN; 或 &#xNNN;——由于正则使用了 Unicode 'u' 标志,代理对也能正确处理。
  3. 3
    单次正则遍历将实体解码回字符
    解码时,一次正则遍历识别所有实体记号(&amp;、&#65;、&#x41; 等),并将每个交给相应的处理程序:十六进制用 parseInt(基数 16),十进制用 Number(),命名实体反向查找,或者——对于不在硬编码表中的实体——使用 textarea 元素,由浏览器原生解析其 innerHTML,从浏览器内置的实体表返回正确字符。
  4. 4
    结果即时显示;通过 Clipboard API 复制到剪贴板
    每次按键时,输出都会通过 React useMemo 同步重新计算。复制使用 navigator.clipboard.writeText()——现代异步 Clipboard API——并在受限环境中静默捕获错误。

相关工具

常见问题