天天看點

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