字符串转义工具

转义或反转义 8 种格式的字符串:HTML、XML、JavaScript、Java、.Net (C#)、JSON、CSV 和 SQL。
所有处理都在浏览器本地进行——你的数据绝不上传到任何服务器。
格式:
方向:
⚠ 安全警告:字符串转义不能替代参数化查询。仅靠转义并不能防止 SQL 注入。在生产代码中请始终使用参数化查询(预编译语句)。
使用方法:选择一个格式和方向(转义 / 反转义),然后输入或粘贴你的文本——输出会自动更新。点击处理可手动触发转换。
在 JSON、JavaScript、Java 和 .Net 模式下,勾选转义所有非 ASCII 字符可以把中文等字符转换为 \uXXXX 序列。
反转义是转义的逆过程:&lt; 变回 <,\n 变回换行符,等等。
HTML:转义把 & < > " ' 转换为 HTML 实体(&amp; &lt; &gt; &quot; &#39;)。在 HTML 中嵌入用户生成的内容时使用,以防止 XSS 攻击。
反转义把 HTML 实体(&amp; &lt; &gt; &quot; &#39;)转换回原始字符。使用浏览器原生 HTML 解析器,可靠地解码所有命名实体和数字实体。
XML:转义把与 HTML 相同的 5 个字符(& < > " ')转换为 XML 安全实体。XML 要求所有 & 字符都被转义,包括在属性值中。
反转义把 XML 实体转换回原始字符。处理 5 个预定义 XML 实体以及数字字符引用。与 HTML 反转义逻辑相同。
JavaScript:转义把特殊字符转换为 JavaScript 转义序列:\n \t \\ \" \' \xHH \uHHHH \u{H...}。动态生成 JavaScript 字符串字面量时使用。
反转义把 JavaScript 转义序列(\n \t \xHH \uHHHH 等)转换回字面字符。处理所有标准 ECMAScript 转义序列,包括 \u{H...} 码点转义。
JSON:转义按 RFC 8259 把 \" \\ 和控制字符转换为 JSON 安全的转义序列。在 JSON 字符串值中嵌入文本时使用。
反转义把 JSON 转义序列(\" \\ \n \uXXXX 等)转换回字面字符。遵循 RFC 8259:只解码有效的 JSON 转义序列。
CSV:转义遵循 RFC 4180:字段包含逗号、双引号或换行符时用双引号包裹。内部双引号加倍(" → "")。
反转义逆向 RFC 4180 CSV 转义:去掉外侧双引号并把内部成对引号还原("" → ")。正确处理多行字段和带引号的逗号。
SQL:转义通过把单引号加倍来转义(' → ''),适用于所有主流数据库(MySQL、PostgreSQL、SQL Server、SQLite)。这只处理字符串字面量转义——不能防止动态查询中的 SQL 注入。
反转义把加倍的单独引号('' → ')转换回单引号。逆向标准 SQL 字符串字面量转义。
Java:转义把特殊字符转换为 Java 转义序列:\n \t \r \\ \" \' \uXXXX 等。生成 Java 字符串字面量时使用。
反转义把 Java 转义序列转换回字面字符。处理所有标准 Java 转义序列,包括 \uXXXX Unicode 转义。
.Net (C#):转义把特殊字符转换为 C# 转义序列:\n \t \r \a \v \0 \\ \" \uXXXX \UHHHHHHHH 等。生成 C# 字符串字面量时使用。
反转义把 C# 转义序列转换回字面字符。处理所有标准 C# 序列,包括 \UHHHHHHHH UTF-32 和变长 \xHH... 十六进制转义。
转义取决于上下文

同一段文本落到不同的地方需要不同的转义:HTML 正文需要 &lt; &amp; &gt;,双引号属性还需要 &quot;,JavaScript 字符串需要反斜杠转义,URL 需要百分号编码。为错误的上下文转义正是标记注入和 XSS 的成因。

经验法则:按目的地转义,而不是按来源——由数据的去向决定,而不是它来自哪里。