跳至正文

🔐 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%E7%B4%A2?keyword=%E4%BD%A0%E5%A5%BD

中文或特殊字符无法直接在 URL 中使用,编码是必需的。

使用示例

Web 开发

// 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%A0%E4%B8%89&age=30

查询参数

# 包含特殊字符的搜索词
原文: 搜索词=C++ & Java
编码: 搜索词=C%2B%2B%20%26%20Java

编码的字符

始终编码的字符

  • 空格: %20
  • 中文/汉字: 每个字符编码为多个字节
  • 特殊字符: !, @, #, $, %, ^, &, *, (, ), =, +, [, ], {, }

示例

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

应用案例

🌐 Web 开发

  • 搜索功能: 将用户输入转换为 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=%E5%92%A8%E8%AF%A2%E4%BA%8B%E9%A1%B9">

🔗 社交媒体分享

// 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%E9%97%BB&url=https%3A%2F%2Fexample.com

📊 数据分析

  • 日志分析: 解释 Web 服务器日志中编码的 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 编码器/解码器有用,请分享给其他开发者!

隐私保护

此工具完全在浏览器客户端运行。您输入的所有数据都不会发送到服务器,仅在浏览器中处理。