URL Encoder

URL Encoder / Decoder

把任意文本编码成 URL 安全的 percent-encoded 字符串,或把编码网址还原回明文。实时预览、UTF-8 安全,完全在你的浏览器中执行。

Component (encodeURIComponent) 会把所有非「保留字符」全部 percent-encode,适合 query 值、单一字段。URI (encodeURI) 会保留 :/?#=& 这些 URL 结构字符,适合整段网址。Form (application/x-www-form-urlencoded) = Component + 空格变成 +,是 HTML form 用的惯例。

RFC 3986 定义了一组「unreserved characters」不需要编码:A-Z a-z 0-9 - _. ~。其他都会被 percent-encoded。encodeURIComponent 还会额外编码 :/?#&=,但 encodeURI 不会 — 区别在于编「query 值」还是「整段 URL」。

纯文本

0 字符

编码结果

0 字符

为什么选择 iKit URL Encoder

快速、精准、纯浏览器执行 — 为开发者、文案以及调试网址的人打造。

三种编码模式

依用途选 Component、Full URI 或 Form 模式 — 编 query-string 值、整段网址或 HTML form 内容,各有正确做法。

注重隐私

编码/解码都用浏览器原生 JavaScript 完成,文本和网址完全不离开你的设备。

实时预览

每次输入都立即更新结果,不用按「编码」按钮,也没有服务器来回延迟。

UTF-8 安全

Emoji、中文、日文、韩文、带重音的拉丁字符、西里尔字母都能正确双向转换。

Form 风格的 + 处理

解码时可选择把 + 视为空格 — HTML form 用 application/x-www-form-urlencoded 时的惯例。

支持文件批量处理

拖入.txt.csv.json 一次编码或解码整个文件,输出干净的.txt 下载。

URL 编码实际是怎么运作的

三个浏览器原生 API、三种模式,全部在这个标签页里运行。

  1. 1

    你在编辑器中输入

    每次按键,输入字符串会传给一个小型 JavaScript 函数。没有 debounce、没有 API 调用、没有 fetch — 函数在你的浏览器标签页中同步执行。

  2. 2

    选择模式

    Component 调用 encodeURIComponent — 编码所有非 A-Z a-z 0-9 - _. ~ 字符。URI 调用 encodeURI — 保留 :/?#=& 让整段 URL 结构保持有效。Form 用 encodeURIComponent 后把空格换成 +,符合 application/x-www-form-urlencoded 规范。

  3. 3

    UTF-8 自动处理

    encodeURIComponent 和 encodeURI 内部会把字符串转成 UTF-8 字节,再对每个非安全字节做 percent-encoding。所以中文「中」会变成 %E4%B8%AD — 完全符合 RFC 3986。

  4. 4

    结果实时呈现

    结果写入只读的输出框。点击「复制」会通过 navigator.clipboard.writeText 写入剪贴板,点击「下载」会通过 Blob URL 保存为 .txt,两者都不离开浏览器。

常见使用场景

选对模式可以避开 bug 的真实场景。

拼接 query string 的值

任何用户输入要塞到 ?q=... 都必须用 Component 模式。URI 模式会把 =& 留下不编,如果值里面有这些字符,整段 URL 就会坏掉。

在聊天工具分享长网址

有些聊天软件、PDF 看到网址里有空格或非 ASCII 字符就会出错。先用 URI 模式把整段网址处理一遍,变成到处都能正确粘贴的格式。

调试后端 400 错误

当 API 拒绝你的请求时,把网址粘到 Decode 模式,看服务器实际收到了什么。双重编码(% 自己被编成 %25)的问题会立刻显现。

表单数据 round-trip

调试 application/x-www-form-urlencoded 的 POST body 时,记得勾选「+ 视为空格」 — 那是浏览器的默认惯例,忘记勾是「为什么我的用户名出现一堆加号」这类 bug 的头号原因。

为什么本地编码很重要

你要编码的网址常常包含真实客户 email、ID、session token — 这些数据绝对不应该粘到陌生人的服务器工具上。iKit URL Encoder 就是这个页面里早已加载完成的 JavaScript,输入完全不离开你的标签页。

  • 编码解码期间没有 fetchXHR、beacon。
  • 页面加载后可离线使用。
  • 没有日志、没有限流、无需注册、无每日额度。

相关教程

来自 iKit 博客的深度教程与工具对比。

常见问题

Component、URI、Form 三种模式区别在哪?

Component (encodeURIComponent) 会把所有非「保留字符」全部 percent-encode,适合 query 值、单一字段。URI (encodeURI) 会保留 :/?#=& 这些 URL 结构字符,适合整段网址。Form (application/x-www-form-urlencoded) = Component + 空格变成 +,是 HTML form 用的惯例。

为什么有些字符没被编码?

RFC 3986 定义了一组「unreserved characters」不需要编码:A-Z a-z 0-9 - _. ~。其他都会被 percent-encoded。encodeURIComponent 还会额外编码 :/?#&=,但 encodeURI 不会 — 区别在于编「query 值」还是「整段 URL」。

为什么解码后文本看起来怪怪的?

三个常见原因:(1) 原本是 Form 编码,+ 应该被视为空格 — 把那个选项打开。(2) 双重编码 — 输入被编了两次,再解一次。(3) 无效的 percent 序列 — % 后面不是两个 hex 字符。错误提示会指出具体位置。

编码结果跟 JavaScript 的 encodeURIComponent 完全一样吗?

Component 模式完全一样 — 我们直接调用 encodeURIComponent。Form 模式会按 RFC 3986 + WHATWG 做额外调整(! ' * 变成 %21 %27 %28 %29 %2A)。URI 模式调用 encodeURI,等同大多数语言所说的「percent-encode 一段 URL」。

我的网址会被上传吗?

不会。整个工具就是这个页面里的 JavaScript,编码解码都在你的浏览器中完成。可以打开 DevTools → Network 观察 — 编码解码时不会发出任何请求。