1. 程式人生 > >頁面跳轉傳參後臺亂碼的問題

頁面跳轉傳參後臺亂碼的問題

背景前提

小弟最近做個jsp頁面,其中有個查詢按鈕,目標是點了查詢之後,將文字框裡面的內容作為引數傳到後臺經行查詢。然而在位址列處所傳引數中文沒問題,但是到了後臺是亂碼,我確定肯定自己已經設定好了編碼過濾器。思前想後懷疑是自己跳轉的地方根本不會走過濾器,因為是通過js程式碼跳轉的。還是貼上程式碼吧:
    function search(){
        var content = document.getElementById("name").value;
        window.location.href='/Test/RoleServlet?content='+encodeURI
(encodeURI(content)); }
後臺接收引數
URLDecoder.decode(req.getParameter("content"), "UTF-8")

總結

後來我查詢資料,有了一些自己的低見
1.首先解釋為什麼會encodeURI兩次,解碼URLDecoder.decode只用一次。這是因為後臺req.getParameter時候,伺服器會自動解碼一次,所以這裡加碼了兩次,而後臺只解碼一次。
2.那難道不可以只encodeURI一次,後臺不解碼不就好了嘛?
可以是可以,但是要把容器的解碼設定成UTF-8(注意是容器的編碼而不是編碼過濾器就可以的)有同學說:位址列傳中文的嗎?  就是tomcat server.xml設定下!其他的話就是過濾器,有待考究,暫時沒試驗