平常我們都是encode 一次,然後直接接受參數
String para = request.getParameter(paramName); 這是因為容器自動能幫我們解碼(DECODE)
一般來說, encode 的時候,使用的UTF-8(系統的編碼) 那麼解碼的時候也是使用UTF-8的話, 那麼不會出現傳說中的亂碼~
但是如果在JSP 頁面使用的UTF-8,但是容器解碼的時候使用的別的編碼的話,則有可能出現亂碼
這時候.一般可以用:
String param = new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"UTF-8");
也能出來.
所有的手段都使了.還是搞不定怎麼辦?
怎麼解決這種多伺服器導致的編碼問題:
假設字串: = "陽";
Encode 一次%E9%98%B3
Encode 兩次%2525E9%252598%2525B3
在第二次的時候,容器自動解的這一次,不管是按GBK 還是UTF-8 還是ISO-8859-1 都好,都能夠正確的得到%E9%98%B3
那麼只要自身在進行Decode 一次就能得到"陽"