DevToolPal
繁

字串跳脫/反跳脫

為 JSON、JavaScript、Java/C#、Python、SQL、CSV、XML、正規表示式和 Shell 指令跳脫或反跳脫字串。

本機處理,不會上傳

選項

模式

輸入

0 字元 · 0 B

輸出

0 字元 · 0 B

功能介紹

字串跳脫工具把文字轉換成可以放進字串常值的形式,也能把跳脫後的字串還原成一般文字。支援九種目標:JSON、JavaScript、Java 和 C#、Python、SQL 字串、CSV 欄位、XML 文字和屬性、正規表示式以及 POSIX Shell 指令。每一種都依照該語言自己的規則處理,結果可以直接貼進程式碼而不會產生語法錯誤。

常見用途:把多行訊息或 Windows 路徑寫進 JSON 設定檔,把一段 HTML 嵌入 JavaScript 字串,替含空格的檔名加上 Shell 引號,或把 price (USD) 這類字面搜尋詞變成能精確比對的正規表示式。

使用方法

  1. 選擇「跳脫」或「反跳脫」。
  2. 選擇語言或格式。
  3. 把文字貼到輸入框,或按「範例」,結果會隨輸入即時更新。
  4. 複製輸出,或按「作為輸入」反向轉換,確認能原樣還原。

JSON、JavaScript、Java/C# 和 Python 還可以把所有非 ASCII 字元也跳脫,得到純 ASCII 字串,在任何檔案編碼下都不會亂碼。

範例

同一行文字依不同目標跳脫的結果:

Input:       He said "hi" in C:\Temp
JSON:        He said \"hi\" in C:\\Temp
SQL:         He said "hi" in C:\Temp            (only ' is doubled)
Regex:       He said "hi" in C:\\Temp
Shell:       'He said "hi" in C:\Temp'

各格式的規則

  • JSON:跳脫引號、反斜線和控制字元,與 JSON.stringify 完全一致。
  • JavaScript:另外跳脫單引號、反引號、垂直定位字元以及行分隔字元 U+2028、U+2029。
  • Java / C#:反斜線跳脫和 \uXXXX;反跳脫時也接受 Java 的八進位跳脫和 C# 的 \x、\U 跳脫。
  • Python:反斜線跳脫,支援 \x、\u、\U;未知跳脫保持原樣。
  • SQL:把單引號加倍,符合標準 SQL 字串常值。
  • CSV:值含逗號、引號、換行或前後空格時,用雙引號包住並把內部引號加倍。
  • XML:取代五個預先定義的實體;反跳脫時也解碼數字字元參照。
  • 正規表示式:在每個有特殊意義的字元前加反斜線,讓模式依字面比對文字。
  • Shell:用單引號包住(POSIX Shell 中單引號內不做任何展開),內部的單引號寫成 '\''。

常見問題

› 什麼是字串跳脫?

有些字元在字串常值裡有特殊意義,例如結束字串的引號或換行字元。跳脫就是把它們換成安全的寫法(通常是反斜線加一個字母),讓字串放進原始碼、查詢或檔案時不會出錯。

› 貼上時要包含字串兩側的引號嗎?

不用,只貼內容。跳脫結果就是程式碼中兩個引號之間的部分。CSV 和 Shell 是替整個值加引號,需要時工具會自動加上外層引號。

› SQL 跳脫能防止 SQL 注入嗎?

把單引號加倍可以得到合法的字串常值,手寫查詢或準備遷移腳本時很實用。但在應用程式碼中,務必使用參數化查詢或預備陳述式,而不是拼接 SQL 字串。

› 反跳脫為什麼提示未知的跳脫序列?

每種語言支援的跳脫不同。例如 JSON 沒有 \x 和 \0,工具會指出所選語言不接受的第一個序列位置。Python 和它的直譯器一樣,會把 \d 這類未知跳脫原樣保留。

› 我的文字會上傳嗎?

不會。跳脫和反跳脫都在瀏覽器中完成,不會傳送到伺服器。