tools / escape
escape/
HTML 實體、Unicode \uXXXX、JS 字串的跳脫與取消跳脫。
原文
跳脫結果
常見問題
HTML 實體、Unicode 和 JS 字串三種跳脫有什麼差別
它們是三種不同的寫法,依文字要放的地方來選。HTML 實體寫成 & < 這樣,用來把文字安全地放進網頁;Unicode 跳脫寫成 \u4f60 這樣的碼位,常見於 JSON 和紀錄檔;JS 字串跳脫處理引號、反斜線和換行,用來把文字放進 JavaScript 程式碼。
HTML 跳脫會處理哪些字元,中文會變嗎
只轉 5 個字元:& 變成 &,< 變成 <,> 變成 >,雙引號變成 ",單引號變成 '。中文、空白、換行和其他字元都不動,不會變成 中 這種形式。放進 HTML 內文或帶引號的屬性值時,需要轉的就是這五個。
HTML 取消跳脫後有些 &xxx; 沒有變化,是為什麼
沒辨識出來的具名實體會原樣保留,不會顯示錯誤。內建的是常見的一批(拉丁字母、希臘字母、標點、貨幣、箭頭、數學符號等),名稱區分大小寫,結尾的分號也不能省。遇到沒有內建的名稱,改成 中 或 中 這樣的數字實體就能解碼。數字實體的碼位是 0、超過 10FFFF 或落在代理區時,會變成替換字元 �。
Unicode 跳脫怎麼用,emoji 為什麼變成兩段 \u
Unicode 跳脫只處理非 ASCII 字元,英文、數字和符號保持原樣,所以「你好 abc」會變成 \u4f60\u597d abc,十六進位是小寫。emoji 這類超出 BMP 的字元依 JavaScript 的慣例拆成代理對,寫成 \ud83d\ude00 這樣的兩段。取消跳脫時 \uXXXX 和 \u{…} 兩種寫法都認得,相鄰的代理對會合併回一個字元;格式不對的 \u 會原樣保留,不會顯示錯誤。
JS 字串跳脫的結果可以直接放進程式碼嗎
外面加上引號就行,單引號和雙引號都能用,因為兩種引號都已經跳脫。反斜線、換行、Tab 會變成 \\ \n \t,其他控制字元寫成 \xHH,中文不跳脫。反引號和 ${ 不會被跳脫,要放進樣板字串(template literal)的話需要自己處理。
取消跳脫顯示「第 N 個字元:…」是什麼意思
代表該位置的反斜線後面寫得不合法。JS 字串模式要求 \x 後面有兩位十六進位數字,\u 後面有四位十六進位數字(或 \u{…} 裡寫 1 到 6 位),不支援 \1 到 \7 這樣的八進位,結尾單獨留一個反斜線也會顯示錯誤。常見原因是貼上了 Windows 路徑,例如 C:\users 裡的 \u 就不是合法的跳脫;路徑裡的反斜線本來就不需要取消跳脫。
跳脫結果可以當 JSON 字串用嗎
取消跳脫可以,跳脫不行。JSON 字串裡的 \n、\"、\/、\uXXXX 都能用「JS 字串」取消跳脫還原成原文。但跳脫方向會把單引號寫成 \',把控制字元寫成 \xHH,這兩種 JSON 都不認;要產生合法的 JSON 字串,請用 JSON.stringify。
文字會上傳嗎,貼上來路不明的內容安全嗎
不會上傳,跳脫和取消跳脫都在瀏覽器裡完成,也沒有字元數上限;輸入超過 100 萬字元時,會等你停下 0.5 秒再計算。HTML 和 JS 的取消跳脫是工具自己逐段解析的,不借助網頁 DOM,也不用 eval,所以貼上 <script> 之類的內容只會得到文字,不會被執行。