HTML Encoder

HTML Encoder / Decoder

把 `& < > " '` 转义为安全的 HTML 实体,或把实体编码的文字解码回原文。四种编码层级 — Minimal、Named、Numeric、All non-ASCII。UTF-8 + emoji + CJK 全支持,在浏览器内运算。

默认用 Minimal — 只转义 & < > " ' 这 5 个会破坏 HTML 正文 / 属性语境的字符。所有现代模板引擎也是这样做。如果你要把版权符号、不换行空格、箭头等用可读的命名实体呈现(&copy; 而非 &#169;),选 Named。当 HTML 要送进可能不识别命名实体的 pipeline 时,选 Numeric。要丢到严格纯 ASCII 的系统(老式 email、烂 API)时,选 All non-ASCII

&apos; 在 XML 与 HTML5 是合法的,但 不在 HTML 4.01 — 较旧的浏览器会把它当成字面字符串显示为 '。数字引用 &#39; 在所有环境都可运作。解码器为兼容性接受 &apos; 作为输入。

输入
输出

为安全的 HTML 输出而生

把用户内容转义为模板可用、把实体编码的数据解码回来 — 加上几个让你真正用得开心的小细节。

四种编码模式

Minimal 只转义 5 个 HTML 不安全字符(& < > " ')— 一般用户内容套模板的最安全默认值。Named 在 HTML5 提供命名实体时使用可读的 &copy; / &nbsp; / &hearts;Numeric 把每个非 ASCII codepoint 编码成 &#NN;All non-ASCII 把所有可打印 ASCII 范围外的 codepoint 都编码,适合老式 / 纯 ASCII pipeline。

解码任何实体

解码器支持命名实体(&copy;)、十进制(&#169;)、十六进制(&#xA9;)。Surrogate-pair codepoint(emoji、古文字)经 UTF-16 正确 round-trip。

实时预览

输出在每次按键后实时更新 — 不需要按 Encode / Decode 按钮。一键切换方向;Swap 按钮把输出搬回输入,让你串接多次转换。

UTF-8 + emoji + CJK 全支持

每个 Unicode codepoint 都能 round-trip:中文、العربية、русский、हिंदी、🎉、Þorgeir。编码器以 codepoint 为单位遍历(非 charAt),surrogate pair 不会被切坏。

保护隐私

你的文字留在你的设备上。编码器、解码器、命名实体查找表全部以 JavaScript 在本地运行。打开 DevTools → Network 即可验证没有任何对外请求。

轻量且快速

纯 JavaScript,无框架运行时。冷启动 gzip 后不到 25 KB。100 KB HTML 文档 5 毫秒内完成编码。

如何编码或解码 HTML 实体

从原始文字到实体安全输出,四个步骤。

  1. 1

    粘贴你的文字

    把纯文本或 HTML 丢到 Input 面板。任何内容都行 — 用户留言、博客文章、emoji、中日韩、RTL 文字。编码器以 codepoint 遍历,多字节序列不会被切坏。

  2. 2

    选择方向与模式

    Direction 设为 Encode(文字 → 实体)或 Decode(实体 → 文字)。Encode 时选择模式:Minimal 适合套模板、Named 用可读实体、Numeric 把非 ASCII 编成 &#NN;All non-ASCII 输出纯 ASCII。

  3. 3

    看实时预览

    输出在每次按键后实时更新。切换下拉菜单实时对比不同模式。Swap 把输出搬回输入 — 适合 round-trip 验证(编码后再解码 = 原文)。

  4. 4

    复制或下载

    用复制图标把结果发到剪贴板,或用下载图标存为 output.encode.html / output.decode.txt。体积差(字符 / bytes 进 → 出)让你看清楚编码让文字膨胀或缩小多少。

为日常 web 开发而生

四种常见场景 — 在这些情况下,浏览器内隐私优先工具比把代码贴到随便的在线 encoder 安全多了。

把用户内容安全地嵌入模板

用户留言、表单回复、搜索词 — 任何来自外部、会被放进 <p><li> 或属性的文字。在字符串拼接进 HTML 之前先用 Minimal 模式编码,你就不会遇到坏掉的标记与最基本的 XSS。

从 API 读进已经编码过的数据

有些 API 返回的是已经实体编码过的字符串(RSS feed、某些 CMS 导出、爬到的 HTML)。粘贴进来、按 Decode、得到原始 Unicode。解码器支持命名、十进制、十六进制实体,包括 surrogate pair。

Email 主题与 meta 标签

<title><meta name="description"><meta property="og:title"> — 这些遇到特殊字符都需要实体转义。把标题编码一次,粘贴到三个地方。

不能进云端服务的敏感内容

内部 CMS 内容、客户数据、NDA 模板 — 任何不能粘贴到云端 encoder 的东西。浏览器内工具让每一个字节都留在你的笔记本电脑上。打开 DevTools → Network 验证没有东西外泄。

100% 私密 — 在浏览器中运算

你的文字永远不会离开你的设备。打开 DevTools → Network,编码或解码过程中没有任何对外请求。

  • 编码器、解码器、命名实体查找表全部以 JavaScript 在你的机器上运行 — 没有服务器端转换、没有第三方 API。
  • Surrogate-pair codepoint(emoji、古文字)以 codepoint 遍历处理,不是 byte-level 映射 — 所以粘贴一个 🎉 经 round-trip 仍是 🎉。
  • 无需登录、不对文字内容埋点。只用一个 cookie 记录 cookie 同意状态,以及一个 cookie 记录语言偏好。

相关文章

为 HTML 转义、实体表、安全模板精选的实用文章。

常见问题

我该选哪一个模式?

默认用 Minimal — 只转义 & < > " ' 这 5 个会破坏 HTML 正文 / 属性语境的字符。所有现代模板引擎也是这样做。如果你要把版权符号、不换行空格、箭头等用可读的命名实体呈现(&copy; 而非 &#169;),选 Named。当 HTML 要送进可能不识别命名实体的 pipeline 时,选 Numeric。要丢到严格纯 ASCII 的系统(老式 email、烂 API)时,选 All non-ASCII

为什么用 <code>&amp;#39;</code> 而不是 <code>&amp;apos;</code> 来转义单引号?

&apos; 在 XML 与 HTML5 是合法的,但 不在 HTML 4.01 — 较旧的浏览器会把它当成字面字符串显示为 '。数字引用 &#39; 在所有环境都可运作。解码器为兼容性接受 &apos; 作为输入。

Emoji 与中日韩字会坏掉吗?

不会。编码器以 codepoint 遍历(非 UTF-16 code unit),所以 🎉(U+1F389)会被编成 &#127881; 并能正确 round-trip。中文也一样(中文 → numeric 模式下变成 &#20013;&#25991;)。

编码后直接把用户输入嵌入 HTML 安全吗?

对 HTML 正文与属性 — 用 Minimal 模式即可。对 URL 语境(href="...")还需要 URL 编码。对 inline JavaScript 或 CSS,HTML 与 URL 编码都不够 — 请使用懂这些语境的模板引擎。绝对不要把未转义的用户输入贴进 <script> 块。

数据会传到服务器吗?

不会。编码器、解码器、命名实体查找表全部以 JavaScript 在你的设备上运行。打开 DevTools → Network 即可验证编码 / 解码过程中没有任何对外请求。粘贴机密、客户数据、内部模板进来都安全 — 没有任何字节离开你的笔记本电脑。