跳至正文

🔐 URL 編碼器/解碼器

特殊字元編碼以便在 URL 中安全使用,或將編碼的 URL 解碼為原始文字的工具。

📝 Input Text

✨ Result

💡 Examples

Original:
https://example.com/search?query=헬로 월드&lang=ko
Encoded:
https%3A%2F%2Fexample.com%2Fsearch%3Fquery%3D%ED%97%AC%EB%A1%9C%20%EC%9B%94%EB%93%9C%26lang%3Dko

URL encoding converts special characters into percent-encoded format for safe transmission in URLs. Use Encode to convert special characters, and Decode to restore the original text.

主要功能

1. URL 編碼 (Encode)

將特殊字元、中文、空格等轉換為百分比編碼格式(%XX)。

範例:

原始: https://example.com/search?query=你好世界&lang=zh
編碼: https%3A%2F%2Fexample.com%2Fsearch%3Fquery%3D%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C%26lang%3Dzh

2. URL 解碼 (Decode)

將百分比編碼的 URL 轉換為可讀的原始文字。

範例:

編碼: %E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C
解碼: 你好世界

3. 便利功能

  • 文字交換: 可快速交換輸入和結果
  • 複製: 將結果複製到剪貼簿
  • 初始化: 一次清除所有輸入

為什麼需要 URL 編碼

安全的 URL 傳輸

URL 中有具有特殊意義的字元:

  • / : 路徑分隔符號
  • ? : 查詢開始
  • & : 參數分隔符號
  • = : 鍵值分隔符號
  • # : 片段

要將這些字元作為資料傳輸,需要編碼。

中文及多國語言

原始: https://example.com/搜尋?keyword=你好
編碼: https://example.com/%E6%90%9C%E5%B0%8B?keyword=%E4%BD%A0%E5%A5%BD

中文或特殊字元不能直接在 URL 中使用,必須編碼。

使用範例

網頁開發

// JavaScript 中產生 URL
const searchQuery = "你好世界";
const encodedQuery = encodeURIComponent(searchQuery);
const url = `https://api.example.com/search?q=${encodedQuery}`;
// 結果: https://api.example.com/search?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C

API 呼叫

# 原始 URL (無法運作)
GET https://api.example.com/users?name=張三&age=30

# 編碼的 URL (正常運作)
GET https://api.example.com/users?name=%E5%BC%B5%E4%B8%89&age=30

查詢參數

# 包含特殊字元的搜尋字
原始: 搜尋字=C++ & Java
編碼: 搜尋字=C%2B%2B%20%26%20Java

被編碼的字元

總是被編碼的字元

  • 空格: %20
  • 中文/漢字: 每個字元編碼為多個位元組
  • 特殊字元: !, @, #, $, %, ^, &, *, (, ), =, +, [, ], {, }

範例

!   → %21
@ → %40
# → %23
$ → %24
% → %25
& → %26
= → %3D
+ → %2B
空格 → %20

活用案例

🌐 網頁開發

  • 搜尋功能: 將使用者輸入轉換為 URL 查詢
  • API 呼叫: 編碼 GET 請求參數
  • 檔案名稱: 處理包含特殊字元的檔案名稱

📧 電子郵件連結

<!-- 包含主旨和內文的 mailto 連結 -->
<a href="mailto:test@example.com?subject=你好&body=詢問事項">
<!-- 編碼後 -->
<a href="mailto:test@example.com?subject=%E4%BD%A0%E5%A5%BD&body=%E8%A9%A2%E5%95%8F%E4%BA%8B%E9%A0%85">

🔗 社群媒體分享

// Facebook 分享 URL
https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fexample.com&quote=%E5%A5%BD%E6%96%87%E7%AB%A0

// Twitter 分享 URL
https://twitter.com/intent/tweet?text=%E7%B2%BE%E5%BD%A9%E6%96%B0%E8%81%9E&url=https%3A%2F%2Fexample.com

📊 資料分析

  • 日誌分析: 解析網頁伺服器日誌中的編碼 URL
  • 追蹤 URL: 解析 Google Analytics 等的參數

技巧

何時編碼?

  • 查詢參數值: ?search=需要編碼
  • 中文/特殊字元: name=張三
  • 空格: query=hello world
  • 網域: https:// (已經是安全字元)
  • 路徑分隔符號: /api/users (有意的分隔符號)

完整 URL vs 只有參數

// ❌ 錯誤方法: 編碼完整 URL
const wrong = encodeURIComponent("https://example.com/search?q=你好");
// 結果: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3D%E4%BD%A0%E5%A5%BD

// ✅ 正確方法: 只編碼參數值
const query = encodeURIComponent("你好");
const correct = `https://example.com/search?q=${query}`;
// 結果: https://example.com/search?q=%E4%BD%A0%E5%A5%BD

注意雙重編碼

原始: 你好
1次編碼: %E4%BD%A0%E5%A5%BD
2次編碼: %25E4%25BD%25A0%25E5%25A5%25BD

// 不要對相同文字編碼兩次!

各程式語言使用方法

JavaScript

// 編碼
const encoded = encodeURIComponent("你好世界");
// 解碼
const decoded = decodeURIComponent(encoded);

Python

from urllib.parse import quote, unquote

# 編碼
encoded = quote("你好世界")
# 解碼
decoded = unquote(encoded)

Java

import java.net.URLEncoder;
import java.net.URLDecoder;

// 編碼
String encoded = URLEncoder.encode("你好世界", "UTF-8");
// 解碼
String decoded = URLDecoder.decode(encoded, "UTF-8");

PHP

// 編碼
$encoded = urlencode("你好世界");
// 解碼
$decoded = urldecode($encoded);

常見問題

Q: URL 的哪個部分需要編碼? A: 只編碼查詢參數的部分。協定(https://)、網域、路徑分隔符號(/)不編碼。

Q: 空格顯示為 %20+ 兩種,有什麼差別? A: %20 可在整個 URL 中使用,+ 只在查詢參數中表示空格。一般使用 %20 較安全。

Q: 發生解碼錯誤。 A: 輸入的文字可能不是正確的 URL 編碼格式,或者已經是解碼的文字。請重新確認原始編碼的 URL。

Q: 對已編碼的 URL 再次編碼會怎樣? A: 會發生雙重編碼,產生不想要的結果。例如 %20 會轉換為 %2520。只編碼一次。

💬 這個工具對您有幫助嗎?

如果您覺得這個 URL 編碼器/解碼器實用,歡迎分享給需要的朋友!無論是網頁開發、API 整合或資料處理,這個工具都能讓您的工作更有效率。

隱私保護

此工具完全在瀏覽器本地端運行。您輸入的所有 URL 和文字資料都不會傳送到伺服器,僅在您的瀏覽器中處理,確保您的資料安全。

相關工具