1. 程式人生 > >http請求中文亂碼問題

http請求中文亂碼問題

        最近在開發android專案過程中,使用okhttp3來發送請求,頻繁遇到在post請求時,在伺服器一端獲取引數時遇到中文亂碼,而且竟然get請求不會亂碼,放到另一個工程專案下也不會亂碼,這就令人很奇怪了。

經過對比,原來是在servlet中少些了一行程式碼:

    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    	request.setCharacterEncoding("UTF-8");   //1111
        String userid = request.getParameter("usr");
        String token = request.getParameter("tkn");
        String sessiondata = request.getParameter("auth");
        request.setCharacterEncoding("UTF-8");   //2222
        ServletContext context = request.getServletContext();
   .....
}

這裡截取了servlet的service方法的一部分,本來是隻有222處的utf8設定的,經過測試,上面三個引數也會獲取中文亂碼,後來添加了111處的utf8設定以後,居然把亂碼問題解決了,再次測試post請求,那裡獲取到的引數也沒有中文亂碼了,開心。

以下為猜測:可能是因為第一次把編碼的位置寫在下面了,導致tomcat先按照預設是iso-8859-1解碼了,所以222處的utf8並沒有用處,寫在前面就可以了。

另:昨天通過在eclipse裡刪掉server在重新新增tomcat的方法也解決了一部分亂碼問題

再另:網上查到的設定編碼大多為設定jsp頁面編碼,tomcat設定編碼之類,全部都嘗試了,並沒有用,當然不是說這些方法一點也沒用,只是這一次沒有幫上忙而已,所以希望我的方法能幫到更多的人。(笑)