平常我們都是encode 一次,然后直接接受參數(shù)
String para = request.getParameter(paramName); 這是因?yàn)槿萜髯詣?dòng)能幫我們解碼 (DECODE)
一般來(lái)說(shuō), encode 的時(shí)候,使用的 UTF-8(系統(tǒng)的 編碼) 那么解碼的時(shí)候也是使用 UTF-8的話, 那么不會(huì)出現(xiàn)傳說(shuō)中的亂碼~
但是如果 在JSP 頁(yè)面 使用的UTF-8,但是 容器 解碼的時(shí)候 使用的 別的編碼的話,則有可能出現(xiàn)亂碼
這個(gè)時(shí)候.一般可以使用:
String param = new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"UTF-8");
也能出來(lái).
所有的手段都使了.還是搞不定怎么辦?
怎么解決這種多服務(wù)器導(dǎo)致的 編碼 問(wèn)題:
假設(shè) 字符串: = "陽(yáng)";
Encode 一次 %E9%98%B3
Encode 兩次 %2525E9%252598%2525B3
在第二次的時(shí)候 ,容器自動(dòng)解的這一次,不管是按 GBK 還是 UTF-8 還是 ISO-8859-1 都好,都能夠正確的得到 %E9%98%B3
那么 只要自身在進(jìn)行 Decode 一次 就能得到 "陽(yáng)"