1. 程式人生 > >JS端GET請求encodeURL到web端decodeURL亂碼問題

JS端GET請求encodeURL到web端decodeURL亂碼問題

JS:

window.location.href = "down.action?filepaths=" + encodeURI(encodeURI(filepaths));

WEB:

String s = URLDecoder.decode(filepaths, "utf-8");

*JS端進行2次編碼,之後發給web端進行一次解碼就可以了.

原理:

web端對請求引數預設底層有一次解碼動作,是使用ISO8859-1的碼錶。

所以,經過一次encode的編碼之後servlet會對這個編碼用ISO進行解碼,之後我們手動decode是解析的ISO的解碼之後的字元(url的編碼iso的碼錶都是含有的),這些字元壓根不是url編碼你還decode什麼…所以亂碼了

解決辦法就是使用2層encode了,經過二次encode,servlet會用ISO解碼一次,解完之後還是url編碼只不過是ISO的字元表現形式(ISO的字元u8是含有的),之後我們手動decode就可以解析出來了。