如果您確定不論是您的JSP頁面還是您的Servlet都已經采取了最基本的亂碼處理方法之後,通過Javascript傳遞的中文在接受的時候調試輸出的是?的話,就試試兄弟我下面這個做法,也是跟別人學的。
你可能采用的Javascript傳遞的中文參數正如:
- tempo.open("GET","Query?condition="+encodeURI(encodeURI(query))+"&kind="+kind,true);
- 或者僅僅是在頁面<head>標簽中嵌入的一小段script代碼傳遞的中文參數:
- function changefont(){//下拉列邊框變化時觸發session中的用戶默認字體發生變化
- var fontname=document.getElementById('fontname').value;
- alert(fontname);
- var url;
- url="Communicate.JSP?user2=";
- urlurl=url+'<%=user2%>';
- urlurl=url+"&user2id="+'<%=user2id%>'+"&changefontname="+encodeURI(encodeURI(fontname));
- // alert(url);
- window.location.href=url;
- }
您可能已經發現他們的一個共同點了, Javascript傳遞這就是解決問題的方法了,兄弟您可以試試,希望對您有所幫助。下面是接受部分解碼方法:
- String fontWords=request.getParameter("changefontname");//
- fontWords=Java.Net.URLDecoder.decode(fontWords,"utf8"); //post 傳遞的時候,一定是用utf8編碼的,url 自己可以設定
- //System.out.println(condition);
- //當調用request.getParameter()函數時,會自動進行一次URI的解碼過程,調用時內置的解碼過程會導致亂碼出現。
- 而URI 編碼兩次後,request.getParameter()函數得到的是原信息URI編碼一次的內容。再用可控的解碼函數 Java.Net.URLDecoder.decode()就可解出原始的正確的信息。