URL Encoder / Decoder
One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
Ctrl+Enter Run · Ctrl+Shift+C Copy · Esc Clear
Understand URL Encoder / Decoder
百分号编码把在 URL 中承担结构含义的字符重写掉,使它们能够作为数据传输。
How it works
非保留字符集(A–Z、a–z、0–9 以及 - _ . ~)之外的每个字符,都会被替换成 % 加上它所占每个 UTF-8 字节的两位十六进制,因此空格变成 %20,é 变成 %C3%A9。两种模式对应两个 JavaScript 函数,区别在于它们放过了什么:encodeURI 保留构成 URL 的字符—— : / ? # [ ] @ & = + $ , ——而 encodeURIComponent 连这些也一起编码。整条 URL 用 encodeURI,准备塞进 URL 的单个值用 encodeURIComponent。
When to use it
- 把用户输入的搜索词、邮箱地址或文件名放进查询字符串。
- 构造一条把另一个完整 URL 作为参数值携带的跳转链接。
- 从服务器日志或 OAuth 回调中读出百分号编码的 URL,看清实际发送的内容。
- 对含有空格或非 ASCII 字符的路径段进行编码。
Watch out for
- 对单个值使用 encodeURI 是错误选择:它不动 & = ? #,因此含 & 的值会悄悄分裂成两个查询参数。大多数链接损坏都源于这一个差别。
- 表单请求体和很多老式查询字符串把空格编码成 + 而不是 %20。这里解码不会把它还原——decodeURIComponent 会留下一个字面的加号。
- 重复编码是常见 bug,而且看得出来:%20 会变成 %2520。URL 里出现 %25 就意味着有内容被多编码了一次。
- 尽管 RFC 3986 把 ! ' ( ) * 列为保留字符,encodeURIComponent 仍不转义它们,因此少数严格的服务器还是会与它意见不合。
Not the right tool for: 让一个值可以安全地渲染进页面。解码后的 URL 参数在进入 DOM 之前仍需做 HTML 转义。
Frequently Asked Questions
URL 编码是做什么的?
URL 编码(百分号编码)把 URL 中的特殊字符替换成 % 加上其十六进制 ASCII 码。空格变成 %20,& 变成 %26。这样能保证 URL 合法,并且所有浏览器和服务器都能正确解析。
什么时候需要对字符串做 URL 编码?
在把值拼接到查询字符串、表单 POST 请求体或任何 URL 组成部分之前都要编码。用户提供的数据一律要编码——&、=、#、? 和 + 这些字符在 URL 中都有保留含义。
encodeURI 和 encodeURIComponent 有什么区别?
encodeURI 用于整条 URL,会保留结构字符(: / ? # [ ] @ 等)。encodeURIComponent 用于单个值,连这些结构字符也一并编码——查询参数的值应该用它。
How to Use URL Encoder / Decoder
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.