HTML 编码
将字符转义为安全的 HTML 实体。
如何使用 HTML 编码
- 粘贴你的文本或 HTML。
- 复制转义后的实体。
关于 HTML 编码
转义可以阻止文本被当作标记来解析。把小于号替换成 <,浏览器就会把它绘制成字符,而不是打开一个标签——这正是为什么在不受信任的输入到达页面之前对其进行转义,是防止跨站脚本攻击的基础手段。此工具会转换五个关键字符——与号、尖括号、双引号和撇号。其余字符,包括带重音符号的字母和表情符号,都保持原样;UTF-8 无需实体即可正确处理它们。
与号必须最先处理,因为每个实体都以它开头。如果先转义尖括号,再转义你刚刚生成的与号,就会把 < 变成 &lt;。此工具只进行一次遍历,因此每个字符只会被替换一次,不多不少。对解析器而言,命名实体和数字实体是等价的——数字形式只是直接写出了码点。
请明确本工具的用途:用于检查和准备文本,而不是让任何东西变得安全。转义是与上下文相关的——在 HTML 正文中安全的输出,放到脚本块、属性、URL 或 CSS 值中并不会自动安全,每种场景都需要各自的规则。请在你的模板引擎中进行转义,那里才清楚具体的上下文。使用 HTML 解码工具进行反向操作。一切都在你的浏览器本地运行。
常见问题
它会转义哪些字符?
恰好五个:& < > " 和 '。这些是能够改变解析器读取文本方式的字符。带重音符号的字符、符号和表情符号都保持不变,因为 UTF-8 页面可以正常渲染它们,把它们转成实体只会让输出变得更大。
转义能让我的网站免受 XSS 攻击吗?
不能,千万不要这样以为。针对 HTML 正文的转义,在脚本块、事件处理属性、URL 或样式表内部并不足够——每种上下文都有不同的规则。请使用你所用框架中支持上下文感知的转义机制;本页面仅用于检查和准备文本。
为什么必须先转义与号?
因为 & 是每个实体的起始字符。如果先把 < 转义成 <,再去转义与号,就会命中你刚刚生成的那个 &,最终得到 &lt;——显示出来就是一堆乱码。本工具采用单次遍历的方式,完全避免了这个顺序问题。
为什么用 ' 而不是 '?
两者都表示撇号,但 ' 是一个数字引用,任何 HTML 解析器都能识别;而命名实体 ' 源自 XML,较旧的 HTML 解析器无法识别。因此转义工具通常更倾向于使用数字形式。
我可以粘贴真实的 HTML 进去吗?
可以——这是常见用法。粘贴标记后,你会得到转义后的源代码,可以作为代码显示在页面上,而不会被当作元素渲染。

