把空格、中文、emoji 等特殊字符转 %xx 百分号编码,或反向解码,全程浏览器本地
- 本地处理
- 分类 编码加密
- 适合 快速检查小 payload、令牌、哈希和编码值。
编码对比:Component / 完整 URL / 表单三种模式▾
| 字符 | Component | 完整 URL | 表单 (+) | 说明 |
|---|---|---|---|---|
| (space) | %20 | %20 | + | 表单模式用 + 表示空格 |
| & | %26 | & | %26 | 完整 URL 保留 |
| = | %3D | = | %3D | 完整 URL 保留 |
| # | %23 | # | %23 | 完整 URL 保留 |
| ? | %3F | ? | %3F | 完整 URL 保留 |
| / | %2F | / | %2F | 完整 URL 保留 |
| : | %3A | : | %3A | 完整 URL 保留 |
| + | %2B | + | %2B | 避免被解读成空格 |
| @ | %40 | @ | %40 | 完整 URL 保留 |
| 中 | %E4%B8%AD | %E4%B8%AD | %E4%B8%AD | 三种模式均编码 UTF-8 |
浏览器 API 速查▾
| API | 编码方式 | 使用场景 |
|---|---|---|
| encodeURIComponent() | Component | 除 A–Z a–z 0–9 - _ . ~ 外全转义 |
| encodeURI() | Full URL | 保留合法 URI 可直接包含的字符 |
| URLSearchParams | form-urlencoded | 空格 → +,适合多参数 query 字符串 |
| URL constructor | Strict RFC 3986 | 非法字符直接抛错,可用于验证 URL 格式 |
| fetch() | None | 必须自行编码后再传入 |
| window.location.search | None | 返回原始 query,需自行解码 |
React & fetch 代码示例▾
1. Build a search URL — one query param
const query = "café & boulangerie";
const url = `https://example.com/search?q=${encodeURIComponent(query)}`;
// → https://example.com/search?q=caf%C3%A9%20%26%20boulangerie2. Multiple params — use URLSearchParams (recommended)
const params = new URLSearchParams({
q: "café & boulangerie",
lang: "fr",
page: "2",
});
const url = `https://api.example.com/search?${params}`;
// → https://api.example.com/search?q=caf%C3%A9+%26+boulangerie&lang=fr&page=23. React component — URL state + fetch
function SearchPage() {
const [query, setQuery] = useState("");
const search = async () => {
const res = await fetch(
`/api/search?q=${encodeURIComponent(query)}`
);
const data = await res.json();
// handle data…
};
return (
<input
value={query}
onChange={(e) => setQuery(e.target.value)}
onKeyDown={(e) => e.key === "Enter" && search()}
/>
);
}4. OAuth redirect_uri — encode the whole callback URL
const callback = "https://app.example.com/cb?next=/dashboard";
const authUrl =
"https://provider.com/oauth2/authorize" +
"?client_id=my-app" +
`&redirect_uri=${encodeURIComponent(callback)}` +
"&response_type=code";5. Guard against double-encoding — test before you encode
const isAlreadyEncoded = (s) => /%[0-9A-Fa-f]{2}/.test(s);
const safeEncode = (value) =>
isAlreadyEncoded(value) ? value : encodeURIComponent(value);
safeEncode("hello%20world"); // already encoded → "hello%20world"
safeEncode("hello world"); // not encoded → "hello%20world"6. Selective path encoding — encode unsafe chars, preserve /
const componentUnsafe = /[^A-Za-z0-9_.~-]/g;
const encodePath = (path) =>
path.replace(componentUnsafe, (ch) =>
ch === "/" ? "/" : encodeURIComponent(ch)
);
encodePath("/résumé/2026/café");
// → "/r%C3%A9sum%C3%A9/2026/caf%C3%A9"常用 URL 编码正则速查▾
| 正则 | 用途 | 说明 | |
|---|---|---|---|
| /%[0-9A-Fa-f]{2}/g | 找百分号编码字节 | 匹配任意合法 %XX 序列,可用于检测或统计已编码字符 | |
| /%25[0-9A-Fa-f]{2}/ | 检测双重编码 | %25XX 说明 % 号本身被编码了,即字符串被编码了两遍;解码一次即可修复 | |
| /[^A-Za-z0-9_.~-]/g | 需 Component 编码的字符 | 每个匹配项都是 encodeURIComponent 会转义的字符,用于选择性编码或验证 | |
| /\+/g | 表单编码空格 | 在 application/x-www-form-urlencoded 里 + 代表空格;调用 decodeURIComponent 前先替换成 %20 | |
| /^https?:\/\/\S+$/ | 简单 URL 格式检查 | 编码或请求前快速验证一个值是否看起来像 http/https URL |
这个工具能做什么
免费在线 URL 编码/解码工具。把空格、& ? # 中文 emoji 等特殊字符转为 %xx 百分号编码,或反向解码。支持完整 URL 模式(只转不安全字符)和 Component 模式(连 & = # 都转,适合单个 query 参数或路径段)。 100% 浏览器本地,URL 不上传。
工具细节
- 输入
- 文本 + 结构化内容
- 页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
- 输出
- 即时结果 + 复制 + 预览
- 结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
- 隐私
- 可能使用网络查询
- 组件源码里检测到网络调用,页面会按工具逻辑处理;敏感内容建议先脱敏。
- 保存 / 分享
- 可分享链接状态
- 关键设置会进入 URL,复制链接后别人能复现同一组参数。
- 性能预算
- 首屏 JS ≤ 8 KB
- 没有声明 WASM 依赖,适合快速打开和移动端使用。
- 适用场景
- 编码加密 · 程序员
- 分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。
怎么用
-
1. 输入
把内容粘贴或拖入工具面板。
-
2. 处理
点击按钮,在浏览器内本地处理,文件不上传。
-
3. 复制 / 下载
一键复制结果或下载到本地。
URL 编码 / 解码 适合怎么用
适合做浏览器本地的编码、解码、哈希、令牌检查和可分享转换。
适合编码任务
- 快速检查小 payload、令牌、哈希和编码值。
- 把值整理好再放进 API、URL、文档或客服工单。
- 输入可能敏感时,尽量避开账号型在线工具。
编码检查项
- 真实密钥不要随便粘贴,除非确认能接受本地浏览器处理。
- 分享结果前确认这个操作是否可逆。
- 哈希值要核对算法和大小写是否符合对方要求。
下一步可以接着做
这些入口会把当前任务接到更完整的工具链里。
真实使用场景
把带活动名的追踪链接贴进营销邮件
你的 UTM 里活动名带空格还带 &,比如「夏季 & 秋季 2026」。整段丢进 Component 模式,会变成 %E5%A4%8F%E5%AD%A3%20%26... 那个 & 就不会把 query 字符串从中间截断。编一次,一个参数,点击照样落到正确的 utm_campaign 上。
手拼一条高德或百度地图深链
你想给「外婆家(西湖店),龙井路 12 号」生成一条地图链接。中文、逗号、 括号在裸 href 里全会出问题。只对 query 部分做 Component 编码,得到 %E5%A4%96%E5%A9%86%E5%AE%B6... 点开直接定位到那家店,而不是 404 或 一串乱码的搜索结果。
排查接口为什么返回 400
同事甩来一条 400 的 URL。贴进解码模式,藏着的 %26 和 %3D 立刻还原成 & 和 =,一眼看出是有人把一段 JSON 塞进了单个 query 参数。几秒就看清 真实结构,不用对着 40 个 %xx 干瞪眼。
给 OAuth 流程编码 redirect_uri
OAuth 要求回调地址作为一个参数传进去: ?redirect_uri=https://app.example.com/cb?next=/dashboard。里面的 ? 和 / 必须 Component 编码,否则授权方会在第一个 ? 处截断。编成 https%3A%2F%2Fapp.example.com%2Fcb%3Fnext%3D... 整条回调才能完整带回来。
常见踩坑
用 Component 模式编整条 URL,它会把 :// 和 / 也转掉,https://a.com 变成 https%3A%2F%2Fa.com 就点不开了。整条链接用完整 URL 模式,Component 模式只留给单个参数。
忘了 query 里字面 + 也要转义。把「1+1=2」当作 ?eq=1+1=2 发出去,服务端读成「1 1=2」。Component 编成 1%2B1%3D2 才能保住那个加号。
对一个根本没编码过的值做解码。把 /a%b/c 这种路径丢进解码会报错,因为单独的 %b 不是合法的 %xx。先确认字符串里确实是完整的百分号转义再解。
隐私说明
全部在你的浏览器里跑。你粘贴的文本由内置的 encodeURIComponent / encodeURI 在本地完成编解码,不会发到任何服务器,也不会被记录。如果你开了可分享链接,编码结果会写进页面 URL 方便你分享,所以开着这个功能时别粘贴 token、带签名的 URL 或任何机密内容。
常见问题
类似工具组合
做你这行的人, 还会一起用这些。