URL編碼解碼工具:中文URL轉義線上轉換(2026)
URL編碼解碼工具:中文和特殊字元的URL轉義線上編碼解碼,講清為什麼URL裡的中文會變成%百分號亂碼及使用場景。
URL編碼解碼工具:中文和特殊字元的URL轉義線上編碼解碼,講清為什麼URL裡的中文會變成%百分號亂碼及使用場景。
下面這個URL編碼工具,純瀏覽器本地執行,輸入即出結果,不上傳資料。往下有原理和使用說明。
All facts verified. Here is the knowledge HTML.
URL 編碼就是把網址裡有特殊含義或非 ASCII 的字元,替換成”%+兩位十六進位制”(空格變 %20,中文按 UTF-8 逐位元組轉),讓瀏覽器和伺服器不會把它們誤當成語法分隔符。按 RFC 3986 的規定,只有字母、數字和 - _ . ~ 這幾個”非保留字元”能原樣出現,其餘的 / ? # & = @ 要麼保留作語法用途、要麼必須轉義。
為什麼非編不可?一條 URL 裡 ? 分隔路徑與查詢、& 分隔多個引數、= 分隔鍵與值。假如引數值本身帶這些字元(比如搜尋詞就是 a&b),不編碼就會被當成新引數,資料當場錯亂。這也是本工具的核心用途:把一段文字安全地塞進 URL,或把別人給的 %E4%B8%AD 還原成可讀文字。
JavaScript 裡兩個編碼函式最容易混。差別就在它們對分隔符的態度:
| 對比項 | encodeURI | encodeURIComponent |
|---|---|---|
| 不編碼的分隔符 | ; / ? : @ & = + $ , # 全保留 | 這些統統編碼 |
| 適用場景 | 編整條拼好的網址 | 編單個引數值或路徑片段 |
| 空格結果 | %20 | %20 |
| 典型翻車 | 值裡含 &= 會拼錯引數 | 基本安全,日常首選 |
結論很直接:編單個引數值或路徑片段用 encodeURIComponent,編整條已經拼好的網址才用 encodeURI。九成場景選前者不會錯。
1. 重複編碼——對已經編過的串再編一次,% 會變成 %25,連結徹底失效。拿到手的字串先確認它到底編過沒有。
2. + 和 %20 混淆——表單提交(application/x-www-form-urlencoded)用 + 代表空格,而 encodeURIComponent 輸出的是 %20;解碼時 decodeURIComponent 不會把 + 還原成空格,得自己先把 + 替換掉。
3. 沒完全遵守 RFC 3986——encodeURIComponent 不編碼 ! ' ( ) * 這五個字元,但 RFC 3986 其實要求轉義它們,個別嚴格的服務端會因此解析異常,必要時得手動補編。
—
參考來源(已聯網核實,正文未編造任何數字):
– MDN `encodeURIComponent()` / `encodeURI()`:兩函式不編碼的字符集、`! ‘ ( ) *` 與 RFC 3986 的出入及官方 workaround — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
– RFC 3986(URI 通用語法):非保留字元 `A-Z a-z 0-9 – _ . ~`、保留字符集、百分號編碼定義 — https://datatracker.ietf.org/doc/html/rfc3986
– Wikipedia「Percent-encoding」:`%20`=空格(十六進位制 20 / 十進位制 32),表單 `+` 空格 vs `%20` 的區別(PHP `urlencode` 用 `+`、`rawurlencode` 用 `%20`)— https://en.wikipedia.org/wiki/Percent-encoding
正文約 780 字,含 1 張對照表 + 1 個深色適配藍框(thead `#0693e3` 白字、藍框 `#f0f9ff`+`#0693e3`),無八股詞,開頭直答。結尾已留「相關閱讀」佔位。