今天碰到一個前臺MooTools框架Ajax向後臺轉值,後臺接受是亂碼的問題。
試關前臺用encodeURI(參數)的方式對參數進行URL編碼,
後臺用java.net.URLDecoder.decode(參數, "UTF-8")進行解碼,
然而得到的值一直都是亂碼,後來改用其它方法,用javascript函數或後能用java進行轉碼都未解決,
最後在網上看到一段話:
分析:當調用request.getParameter()函數時,會自動進行一次URI的解碼過程,
調用時內置的解碼過程會導致亂碼出現。而URI編碼兩次後,
request.getParameter()函數得到的是原信息URI編碼一次的內容。
再用可控的解碼函數java.net.URLDecoder.decode()就可解出原始的正確的信息。
以上分析純屬個人看法,不知是否正確。
試着將前臺參數用encodeURI(encodeURI(參數))轉換了兩次,問題得以解決。
不知上面的分析是否正確,但問題確實解決,納悶!
但還是記錄下來求證。