URL编码是怎么回事
网址里只能使用不带重音的字母、数字和少数符号,其他字符都会被编码。在 UTF-8 中,中 由 E4、B8、AD 三个字节组成,所以变成 %E4%B8%AD。空格是 %20,在表单里则是 +。
编码后
%E5%8C%97%E4%BA%AC%E7%83%A4%E9%B8%AD
还原后
北京烤鸭
常见的URL编码
%E4%B8%AD= 中,%E6%96%87= 文,%E5%AD%97= 字,%E7%A0%81= 码%E4%B8%AD%E6%96%87= 中文,%E5%8C%97%E4%BA%AC= 北京,%E4%B8%8A%E6%B5%B7= 上海%EF%BC%8C= ,,%E3%80%82= 。,%E3%80%81= 、,%EF%BC%9A= :%20= 空格,%2F= /,%3F= ?,%26= &,%25= %
旧系统会直接用 GBK 的字节编码汉字:%D6%D0%CE%C4 而不是 %E4%B8%AD%E6%96%87。Mojibuster 也能识别这种写法,并还原成 中文。
URL编码的文字从哪里来
- 复制的链接: 浏览器会把中文网址显示成能读的样子,但复制后常常粘贴成
%E5%8C%97%E4%BA%AC。 - 表单和流量统计: 搜索词和 UTM 参数在服务器日志和统计导出里保持编码状态,例如
?q=%E7%83%A4%E9%B8%AD。 - 导出文件和 API: 有些邮件工具、Webhook 和 API 会把值编码后保存,于是 Excel 或 CSV 里出现的是代码,而不是名字。
- 文件名: 服务器没有解码文件名时,下载的文件会叫
%E5%90%88%E5%90%8C.pdf这样的名字。
编码和乱码同时出现
有时文字被破坏了两次:%E6%B6%94%E8%BE%A9%E7%88%9C 是把 乱码 误读成 GBK 之后的乱码,再被 URL 编码的结果。Mojibuster 先解开编码,再修复 GBK 乱码,最后得到 乱码。
本页已经勾选 同时转换编码字符。HTML 字符引用(中)、邮件编码(=E4=B8=AD)和程序里的转义(\u4e2d)也会一并转换。其他乱码问题见乱码是什么。
在 Excel、JavaScript、Python 和 PHP 中自己解码
- Excel: 只有编码函数(英文版为
ENCODEURL),没有解码函数。最简单的办法是复制整列,粘贴到这里,再把结果复制回去。另见 Excel 乱码。 - JavaScript:
decodeURIComponent("%E4%B8%AD")得到中。 - Python:
urllib.parse.unquote("%E4%B8%AD");表单里的+要当作空格时用unquote_plus。 - PHP:
rawurldecode(),表单数据用urldecode()。
常见问题
%E4%B8%AD 是什么意思?
它是 中 的 URL 编码:UTF-8 的三个字节 E4、B8、AD,每个前面加一个 %。同理,%E6%96%87 是 文。
%20 是什么意思?
空格。表单数据里常用 + 代替。普通文字里的 + 可能是真正的加号,所以 Mojibuster 会保留它。
我的链接会被上传吗?
不会。转换完全在浏览器中进行。带令牌、邮箱地址或其他个人信息的链接也不会离开你的设备。
为什么“100%”没有被改动?
Mojibuster 只转换能变成真正特殊字符的序列。100%、50 % 或普通文字里单独的 %20 都会保持原样。