crazycloudcc@blog:~/tools/url — zsh — 80×24
--:--:--···
crazycloudcc@blog:~/tools/url$ pwd
/home/crazycloudcc/blog/tools/url
> cd ./tools/url

~/tools / url

URL 编码 / 解码

对查询串或整段文本做 encodeURIComponent / decodeURIComponent。

本地计算 · 无账号

使用 encodeURIComponent / decodeURIComponent。

这是什么

URL 编码(百分号编码)把空格、中文与保留字符转成 %XX,避免破坏查询串。本页对文本做 encodeURIComponent / decodeURIComponent,适合检查参数里到底塞了什么,或拼链接前预览编码结果。计算在浏览器完成,不会去请求你输入的网址。把它当成「查询值的打字机」,而不是「整站链接缩短器」。

原理

每个需要转义的字节写成百分号加两位十六进制。UTF-8 下,一个汉字常对应三个字节,于是变成连续三个 %XX。encodeURIComponent 会编码 / ? & = 等结构字符,适合「单个查询值」;encodeURI 则尽量保留 URL 骨架。表单里有时用 + 表示空格,与 %20 场景不同。本页选择更严格的组件编码,减少把整段 URL 误编码后无法打开的情况。可以把它想成:路径与查询的「语法字符」必须保留给解析器,用户数据里的同类字符则要逃逸,否则服务器会把你的斜杠当成新的路径段。搞清「编码的是哪一层」比死记函数名更重要。

什么时候用

复制带中文的搜索词、调试 OAuth redirect、或日志里出现一长串 %E4%BD%A0 时,可快速还原可读文本,也可把空格与符号编进查询值。不要对已经是完整 URL 的字符串盲目整链编码。写爬虫或 C++ HTTP 客户端拼 query 时,也适合先用本页确认单个参数的期望编码,再检查自己实现是否少编了 & 或 =。

示例

  • 编码含空格与斜杠的值
    输入:a b/中文
    输出:a%20b%2F%E4%B8%AD%E6%96%87
  • 解码 UTF-8 序列
    输入:%E4%BD%A0%E5%A5%BD
    输出:你好

常见错误

  • 整段 URL 不要用本页一次性编码,否则会破坏协议与路径分隔。
  • 加号 + 在 application/x-www-form-urlencoded 里常表示空格,和 %20 来源不同。
  • 非法 % 序列(如 %ZZ)会导致解码失败。

常见问题

和 encodeURI 有什么区别?
encodeURI 保留结构字符;本页用 encodeURIComponent,适合编码单个组件。
会访问我输入的网址吗?
不会。只做字符串变换,不发起网络请求。
能拆 host / path / query 吗?
本页专注编解码。拆解可用浏览器 URL 构造函数或开发者工具。

C++ 里拼查询串时记得编码参数值

#include <iostream>
#include <string>
// 伪代码:对 value 做百分号编码后再拼接
// auto q = "/search?q=" + percent_encode(user_input);
int main() {
  std::string raw = "a b";
  std::cout << "记得编码,而不是直接拼接: " << raw << "\n";
}

自己实现 percent_encode 时务必按 UTF-8 字节输出 %XX。可在 Playground 写单元测试,用本页样例作期望值。

在 Playground 打开 · 数据只在本地处理:不会把待编码文本发往本站 API。若你同时打开多个标签页,各自的输入也不会同步到服务器或其他设备。

branch: mainposts: 12encoding: utf-8