# HTML 实体编码与解码

用命名、十进制或十六进制实体为 HTML 转义文本，或把 & 和 &eacute; 等实体转回字符。

https://codeknife.dev/zh/html-shiti/

## 功能

为 HTML 转义文本，并把 HTML 实体转回字符。实体用名称（`&eacute;`）、十进制数字（`&#233;`）或十六进制数字（`&#xE9;`）来书写字符。

## 使用方法

1. 输入或粘贴文本，或拖入文本文件。
2. 选择**编码**或**解码**。编码时，选择只转义 HTML 视为标记的字符，还是同时转义所有非 ASCII 字符，以及写成名称、十进制还是十六进制数字。
3. 复制或下载结果。

## 示例

转义标记：

`<p class="x">Tom & Jerry</p>` 变成 `&lt;p class=&quot;x&quot;&gt;Tom &amp; Jerry&lt;/p&gt;`。转义所有非 ASCII 字符后，`café © €` 变成 `caf&eacute; &copy; &euro;`。

## 须知

- HTML 文本和属性中始终需要转义的字符是 `&`、`<`、`>`、`"` 和 `'`。
- 撇号写成 `&#39;`，因为 HTML 4 没有它的名称。解码也能读取 `&apos;`。
- 没有名称的字符，如表情符号，写成数字，每个字符一个数字。
- 名称表涵盖 HTML 4.01 的 252 个实体。表外的名称在解码时保持原样。

## 什么是 HTML 实体？

实体是在 HTML 中不直接输入字符就能写出它的方式：名称如 &eacute;，或数字如 &#233;（十进制）、&#xE9;（十六进制）。因为 HTML 会把它们当作标记，所以文本和属性中必须转义五个字符：& < > 和两种引号。

## 常见问题

### 我必须转义哪些字符？

在文本中转义 & 和 <，在属性值内转义包围该值的引号。到处转义 > 和两种引号是无害的，也是安全的默认做法，“仅标记”就是这样做的。像这样转义用户输入是防御注入标记的第一道防线。

### 为什么撇号变成 &#39; 而不是名称？

HTML 4 没有撇号的命名实体。&apos; 存在于 XML 和 HTML5，但旧软件不认识，所以数字是安全的选择。解码两者都接受。

### 这个工具会把我的文本发送到别处吗？

不会。一切都在你的浏览器中进行。你输入的内容不会发送到我们的服务器。