get請求和post請求對比
例如:
String name = request.getParameter("name");System.out.println(name);//亂碼
處理辦法:
String name = request.getParameter("name");name = new String(name.getBytes("ISO-8859-1"),"UTF-8");System.out.println(name);//亂碼問題解決
原因:對於get請求,tomcat對請求中的參數默認是採用ISO-8859-1的編碼格式。對於get請求,可以使用上面的處理辦法來處理。但是如果一個項目中有很多地方使用get請求,那麼每一處請求都要像上面這樣轉碼,比較麻煩。只需更改一個地方的配置就可全局解決get請求亂碼的問題。
<Connector connectionTimeOut="20000" port="8080" URIEncoding="UTF-8">
像上面這樣,在tomcat的server.xml文件裡面的Connetor節點中加入URIEncoding="UTF-8"。就可以保證所有的get請求的參數都是UTF-8 編碼了。
對於post請求,參數是在請求體發送的。一般使用request.setCharacterEncoding("UTF-8")設置參數編碼。但是因為一般項目都會在web.xml中配置編碼過濾器,過濾所有的請求都採用UTF-8編碼,因此也就不用設置request.setCharacterEncoding("UTF-8")。但是編碼過濾器設置的編碼對get請求不起作用。
值得注意的是,從tomcat8.0開始,URIEncoding的默認值不在是ISO-8859-1,而是UTF-8。
推薦閱讀: