http請求中文亂碼問題
阿新 • • 發佈:2019-02-19
最近在開發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設定編碼之類,全部都嘗試了,並沒有用,當然不是說這些方法一點也沒用,只是這一次沒有幫上忙而已,所以希望我的方法能幫到更多的人。(笑)