我试图写一个Java类登录到某个网站。在POST请求中发送的登录数据为

user%5Blogin%5D=username&user%5Bpassword%5D=123456

我很好奇在关键用户登录中%5B和%5D意味着什么。

如何解码这些数据?


当前回答

要找出这些值,只需在浏览器中使用Console并执行以下操作

console . log (decodeURI(“用户5Blogin 5D = username&user 5Bpassword % % 5D = 123456”))

其他回答

最重要的是为什么这些符号出现在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中)。

这是常用的url编码

所以它们分别代表[,]

这些数据可能最初是从一个看起来有点像这样的web表单发布的(但可能要复杂得多):

<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>

如果方法是“get”而不是“post”,点击提交按钮会把你带到一个看起来有点像这样的URL:

http://example.com/?user%5Blogin%5D=username&user%5Bpassword%5D=123456

or:

登录http://example.com/?user [] = username&user[] =密码123456

另一端的web服务器可能会获取用户[login]和用户[password]参数,并将它们转换为一个用户对象,其中登录和密码字段包含这些值。

他们代表[和]。这种编码称为“URL编码”。

根据这里的答案:str='foo%20%5B12%5D'编码foo [12]:

%20 is space
%22 is quotes
%5B is '['
and %5D is ']'

这称为百分比编码,用于对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, ']');
}

希望这能帮助人们在遇到这个问题时解决他们的问题。