~/tutorials/url-encode
URL 编码是什么?%E4%BD%9C 这种串怎么还原成中文
链接里中文变成了 %E4%BD%9C,复制过来打不开;URL 参数带个 & 或 ?、一个空格,整条链接就废了;表单里明明提交的 + 号,收到却变成了空格——这些都是 URL 编码惹的。下面30 秒讲清它是什么,再给你三步把编码串还原成中文,全程浏览器本地完成,不上传、不注册。
URL 编码是什么:一段 30 秒讲清
URL 编码(Percent-Encoding,百分号编码)就一句话:把 URL 里「不安全」的字符,换成 % 加它字节的三位十六进制。比如汉字「作」是 U+4F5C,按 UTF-8 编码是 3 个字节 E4 BD 9C,于是写成 %E4%BD%9C——一个汉字,9 个可见字符。英文字母、数字、- . _ ~ 是安全的原样保留;空格变 %20,& 变 %26,? 变 %3F。
作 → U+4F5C → UTF-8 字节 E4 BD 9C → %E4%BD%9C
什么时候会遇到
- 浏览器地址栏里的中文:你输入汉字,浏览器地址栏里往往显示成 % 串,这是自动帮你编码好的,可以直接粘走。
- GET 传参:
?name=张三要写成?name=%E5%BC%A0%E4%B8%89,参数值里的特殊字符都得先编码。 - 表单 query:application/x-www-form-urlencoded 的提交值整段都是编码过的,+ 还代表空格。
- 把含 & 的串塞进 URL:比如把一张带
&的链接再作为参数传给别人,里面的 & 必须先编码成 %26,否则会被当成新的参数分隔符。
三步还原一个编码串
① 粘贴进工具
把 %E4%BD%9C 这类编码串原样粘进本站工具的输入框,点「解码」,结果框里出来「作」。一个字符都不许漏,漏了就会报 URIError。
② 反向:把普通文字编码成安全片段
要把「张三」拼进 URL 参数?粘贴原文点「编码」,得到 %E5%BC%A0%E4%B8%93,直接 ?name= 后面粘上即可,不怕和 & ? 空格打架。
③ 结果不对劲就查两头
解码出乱码:先核对复制全没全,再怀疑编码不是 UTF-8(源端可能是 GBK)。报「Invalid URI」:% 后面三位不是合法十六进制,多半是复制缺了字节。
工具:yvfng.com 的 URL 编码 / 解码,encodeURIComponent / decodeURIComponent、百分号、表单 + 号处理,粘贴即用,全程在浏览器本地跑,不上传、不注册。
写 URL 编码最常踩的 3 个坑
- + 不是空格:只有 application/x-www-form-urlencoded 的 query 里 + 才代表空格;自定义拼的 URL 里 + 就是普通字符,别见 + 就盲目当空格。
- % 后不合法就报错:decodeURIComponent 碰到 % 后面不是合法十六进制(比如 %E4%ZZ)会抛 URIError,先查复制全没全、有没有混进别的字符。
- 双重转义:已经编码过的串再编码一次,
%E4会变成%25E4,解一遍还是 %E4,要解两遍才出来。编码前先确认原文是明文字符。
常见问题
%E4%BD%9C 到底怎么一步步解出来
先切成 %E4、%BD、%9C 三段,各去掉 % 得到字节 E4 BD 9C;按 UTF-8 规则这三个字节拼回一个汉字「作」。整串就是每个字节都这么还原再拼起来,工具里点「解码」自动完成。
encodeURIComponent 和 encodeURI 什么区别
encodeURIComponent 面向「参数值」,连 & ? = / 都编码,适合拼进 query;encodeURI 面向「整条 URL」,保留 & ? # / 这些结构字符不编码。写参数用前者,补全整条地址用后者。
为什么表单里空格变成了 +
application/x-www-form-urlencoded 的老规矩里 + 就代表空格,浏览器提交表单时自动这么转。所以解码表单参数时 + 要还原成空格;但自定义拼的 URL 参数里 + 就只是普通字符,别混着来。
解码后全是乱码怎么办
多半是编码假设不对:字节其实是 GBK 不是 UTF-8,按 UTF-8 硬拼就出乱码。先确认来源端用的是什么编码,必要时换按 GBK 解码的工具再试;复制漏字节也会乱,先核对长度。
相关工具
URL 编码
编码 / 解码百分号串、表单 + 号处理,粘贴即用,全程本地。打开 ↗
Base64 编解码
图片转 data URI 内嵌、Base64 互转,和 URL 编码是两回事。打开 ↗
JSON 格式化
美化、压缩、校验、键排序,接口返回 JSON 读不了时用。打开 ↗
回工具矩阵
更多在线工具与教程,都在首页一屏看全。回首页 ↗
一句话总结:粘贴 → 解码 → 读结果,反向就编码;全程浏览器本地完成,不上传、不注册。