我正在尝试编写一个Java类来登录某个网站。 POST请求中发送的数据是
user%5Blogin%5D=uesrname&user%5Bpassword%5D=123456
我很好奇{strong}用户登录中的%5B
和%5D
含义。
如何编码这些数据?
答案 0 :(得分:409)
根据here以上的回答:str='foo%20%5B12%5D'
对foo [12]
进行编码:
%20 is space
%5B is '['
and %5D is ']'
这称为percent encoding,用于编码url参数值中的特殊字符。
编辑在我阅读https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description的过程中,我突然想到为什么有这么多人进行同样的搜索。请参阅页面底部的注释:
另请注意,如果有人希望关注最近的RFC3986 对于URL,保留方括号(对于IPv6),因此不保留 在形成可能是URL的一部分的东西时编码(例如 主持人),以下内容可能有所帮助。
function fixedEncodeURI (str) {
return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}
希望这可以帮助人们在遇到这个问题时解决他们的问题。
答案 1 :(得分:25)
他们代表[
和]
。编码称为"URL encoding"。
答案 2 :(得分:10)
[]
在网址编码时被%5B%5D
替换。
答案 3 :(得分:9)
所以他们分别代表[
]
答案 4 :(得分:3)
要找出这些值,您只需在浏览器中使用 Console 并执行以下操作
console.log(decodeURI('user%5Blogin%5D=username&user%5Bpassword%5D=123456'))
答案 5 :(得分:2)
要快速查看,您可以使用this online tool进行百分比/解码。
答案 6 :(得分:1)
数据可能最初是从网页表单中发布的,看起来有点像这样(但可能要复杂得多):
<form action="http://example.com" method="post">
User login <input name="user[login]" /><br />
User password <input name="user[password]" /><br />
<input type="submit" />
</form>
如果方法是&#34;得到&#34;而不是&#34;发布&#34;,点击提交按钮会转到一个看起来像这样的网址:
http://example.com/?user%5Blogin%5D=username&user%5Bpassword%5D=123456
或:
http://example.com/?user[login]=username&user[password]=123456
另一端的网络服务器可能会获取user[login]
和user[password]
个参数,并将它们变成user
对象login
和password
包含这些值的字段。
答案 7 :(得分:0)
最重要的是为什么这些符号出现在url中。 请参见https://www.php.net/manual/en/function.parse-str.php#76792,具体是:
parse_str('foo[]=1&foo[]=2&foo[]=3', $bar);
以上产生:
$bar = ['foo' => ['1', '2', '3'] ];
什么是在数组中分离查询变量的方法(至少在php中)。