字串轉義工具

轉義或反轉義 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 的成因。

經驗法則:按目的地轉義,而不是按來源——由資料的去向決定,而不是它來自哪裡。