URL 编码是什么?
网址只能使用有限的字符。中文、空格,以及 &、=、? 这类在网址中有特殊含义的符号,放进 URL 参数前必须先编码。URL 编码(也称百分号编码)会把字符转成 UTF-8 字节,再写成 % 加两位十六进制数字,例如“中”会变成 %E4%B8%AD。
如何使用
- 点击“编码”或“解码”选择方向,按下的按钮会高亮。
- 在左边输入内容。开启“自动转换”时,停止输入后会自动生成结果。
- 点击“结果放回输入”可以把结果移到左边,并自动切换成相反方向。
空格要编码成 %20 还是 +?
- %20(默认):遵循网址标准 RFC 3986,适用于网址的任何位置。
- +:HTML 表单提交时使用的格式(
application/x-www-form-urlencoded)。开启“空格使用 +”即可;解码时也会把+当作空格。
示例
a b&c=中文 编码后是:
a%20b%26c%3D%E4%B8%AD%E6%96%87
和 JavaScript encodeURIComponent 有什么不同?
结果大致相同,区别是本工具依照 RFC 3986 另外编码 !、'、(、)、* 五个字符,只保留英文字母、数字和 -、_、.、~,在各种服务器上都更不容易出错。
编码范围与网址解析
- 参数值(默认):所有特殊符号都编码,适合放在
?q=后面的值。 - 完整网址:保留
: / ? & = #等网址结构,只编码网址不允许的字符,例如中文、空格与[ ] |等符号。例如https://example.com/咖啡?q=拿 鐵会变成https://example.com/%E5%92%96%E5%95%A1?q=%E6%8B%BF%20%E9%90%B5。 - 解析网址:点「解析网址」会把网址拆成协议、主机、端口、路径、锚点,并把每个查询参数解码后列成表格,重复的参数也会分别列出。查询参数中的
+一律视为空格,与服务器读取的方式相同。
常见问题
可以把整个网址直接编码吗?
用默认的「参数值」编码整个网址,会把 ://、?、& 也一起编码,网址就无法使用。要处理整个网址时,请把「编码范围」改成「完整网址」,会保留网址结构,只编码网址不允许的字符;单独的参数值则用「参数值」。
解码时显示“不是有效的 URL 编码字符串”?
% 后面必须接两个十六进制字符(0–9、A–F)。如果内容本身就有 %(例如 100%),说明它没有被编码过,不需要解码。
结果出现 %2520 是什么意思?
说明内容被编码了两次:% 本身又被编码成 %25。把结果再解码一次就能还原。