天天看点

url中关于编解码加号和空格的问题

今天遇到一个问题,URL中的加号传到后台之后变成了空格

BNn+Y6xKvmejeJmu9sS2OnRJwYhHtYXScG2ol17EUhg1oeSFE5btrT4Eh04QiwIf变成了BNn Y6xKvmejeJmu9sS2OnRJwYhHtYXScG2ol17EUhg1oeSFE5btrT4Eh04QiwIf

原因:URL中的+号,通过 GET方式传值的时候,+号会被浏览器处理为空,需要转换为%2B

解决方法:

一.使用URLEncoder.encode进行编码

注:我在后台用URLDecoder.decode进行解码之后发现+号依然是空格,原因是我在前台编码了一次,但是在服务器被URLDecoder.decode解码了两次,应用服务器一次(jetty、tomcat)、后台一次,导致加号会变为空格。解决的办法:1.做两次编码

URLEncoder.encode(URLEncoder.encode(token, "UTF-8"), "UTF-8"),一次应用服务器去解码,一次后台取解码。2.后台不解码

二.使用.replace(/\+/g,'%2B')