# HTML 实体编码解码 - 在线转义 HTML 特殊字符

> 免费在线 HTML 实体编码解码工具：转义 < > & " '，可选十进制、十六进制或 &copy; 这类命名实体，表情也能正确编码；解码后提示 &nbsp; 等看不见的字符，本地运行。

- 网址: https://qilingtools.com/zh/html-entity
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [开发](https://qilingtools.com/zh/tags/dev), [前端网页](https://qilingtools.com/zh/tags/frontend), [编码解码](https://qilingtools.com/zh/tags/encode)
- 最后更新: 2026-11-07
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

把文本里的 < > & " ' 转成 &lt; &gt; &amp; &quot; &#39;，放进网页时会原样显示，不会被当成标签；也可以把含实体的 HTML 还原成普通文字。转义范围可以选「五个都转」（放进属性值也安全）或「只转 < > &」（结果更短）。中文、表情等非 ASCII 字符可以保持原样，也可以写成十进制 &#20013;、十六进制 &#x4E2D;，或者把 ©、€、—、不换行空格这类常见符号写成 &copy; &euro; &mdash; &nbsp; 这样的名字。表情按完整字符编码，😀 是 &#128512;，不会被拆成两个无效实体。解码后如果结果里有不换行空格、零宽字符这类看不见的字符，会提示数量并可一键清理。全部在浏览器里完成。

## 使用步骤

1. 选择「编码」或「解码」
2. 编码时选好转义范围、非 ASCII 字符的写法，需要的话勾选「有名字的符号用命名实体」
3. 粘贴文本，结果实时出现，点「复制结果」
4. 解码结果里有看不见的字符时，按提示决定要不要换成普通空格

## 功能特点

- 转义 < > & " '，可选只转 < > &
- 非 ASCII 字符可保持原样，或写成十进制、十六进制数字实体
- 约 50 个常见符号可用命名实体，如 &copy; &euro; &nbsp; &mdash;
- 表情等补充平面字符按完整码位编码，不会出现乱码
- 解码支持所有命名实体和数字实体，提示不换行空格、零宽字符、软连字符
- 实时转换，本地运行，不上传

## 常见问题

### 为什么要转义？哪几个字符必须转？

浏览器看到 < 会以为是标签开头，看到 & 会以为是实体开头，所以要在网页里显示「<b>」或「Tom & Jerry」这样的文字，就得写成 &lt;b&gt; 和 Tom &amp; Jerry。放在标签正文里，转 < > & 三个就够；放进属性值（比如 title="…"、alt='…'）里，还要转义引号，否则遇到引号属性就提前结束了，页面会错乱，严重时会被插入恶意脚本。不确定用在哪里时，五个都转最稳妥。

### 单引号为什么写成 &#39; 而不是 &apos;？

&apos; 是 XML 里的写法，HTML5 才正式支持，老的 HTML 4 和一些旧邮件客户端不认；&#39; 是数字写法，所有浏览器和邮件客户端都认，所以本工具转义单引号时用 &#39;。解码时两种都能还原。

### 十进制、十六进制、命名实体有什么区别？

它们表示的是同一个字符，浏览器显示完全一样。以「中」为例，十进制是 &#20013;，十六进制是 &#x4E2D;（对应 Unicode 码位 U+4E2D，方便对照），保持原样就是「中」。命名实体只有常见符号才有，比如 © 是 &copy;、€ 是 &euro;、不换行空格是 &nbsp;，比数字好认；HTML5 一共定义了两千多个名字，中文汉字没有名字。现在网页几乎都是 UTF-8，中文直接写就行，转成数字实体只在页面编码不确定或要放进纯 ASCII 的环境时才需要。

### 转成数字实体后体积变大多少？

按 UTF-8 计算，一个汉字本来占 3 个字节，写成 &#20013; 要 8 个字节，大约是 2.7 倍；😀 本来 4 个字节，写成 &#128512; 是 9 个字节。所以除非有必要，中文不建议全部转成实体。

### 表情编码后为什么以前会变成乱码？

😀 这类表情在 JavaScript 内部占两个编码单位（代理对）。如果按单位逐个转换，会得到 &#55357;&#56832; 两个实体，它们单独都不是合法字符，浏览器显示为「��」，内容就丢了。正确做法是按完整字符转换成一个实体 &#128512;（十六进制 &#x1F600;），本工具就是这样做的，三种写法实测都能还原成原文。

### 解码后提示的「不换行空格」「零宽字符」是什么？

&nbsp; 解码后是不换行空格（U+00A0），看起来和普通空格一样，但程序里它不等于空格，复制进代码、Excel 或数据库后常导致比较不相等、搜索不到；&#8203; 等零宽字符完全看不见，却会让两段看起来一样的文字对不上；&shy; 是软连字符，只在换行处才显示。本工具解码后会提示各有几个，点「换成普通空格，去掉看不见的字符」即可清理结果，不会改动你的输入。

### 用在 JavaScript、网址里也是这样转义吗？

不是。HTML 实体只管 HTML 正文和属性；放进 JavaScript 字符串要用 \" \n \u4E2D 这类转义，可以用「字符串转义」；放进网址参数要用百分号编码 %E4%B8%AD，用「URL 编解码」；想查某个字符的 Unicode 码位，用「Unicode 编码转换」。在 <script> 里用 HTML 实体是不起作用的。

### 解码会执行里面的脚本吗？

不会。解码时内容只当作文字解析，&lt;img src=x onerror=alert(1)&gt; 解码后只是一串文字，不会加载图片，也不会运行代码。

### 文件会上传服务器吗？

不会。所有处理都在你的浏览器本地完成，没有任何网络上传，关闭页面即清除。

### 需要注册或付费吗？

不需要。本站完全免费，无需注册登录，没有次数限制。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：文字、图片和任意文件转 Base64，Base64 还原成文字或文件；支持中文 UTF-8 和 GBK、Data URI、URL 安全写法，解出图片可预览下载，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：把中文、空格和特殊符号转成 %E4%BD%A0 这样的百分号编码，或者把乱码一样的链接还原成文字。支持单个参数和整条网址、UTF-8 和 GBK、+ 号表示空格，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 Header 与 Payload，显示是否过期；填入密钥或公钥（PEM、JWK、JWKS）即可校验签名，本地处理不上传。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希计算工具：对文本或文件一次算出 MD5、SHA-1、SHA-256、SHA-384、SHA-512，粘贴官网校验值自动比对，几 GB 的大文件分块计算，本地完成不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：用浏览器的加密安全随机数批量生成 UUID v4（GUID）或按时间排序的 v7，可大写、去连字符、加花括号，一次最多 100 个，一键复制，本地生成不联网。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，自动识别 0x/0b/0o 前缀和空格、下划线分隔，超大整数不丢精度，本地实时计算。
