get請求和post請求對比

get請求中如果參數中有中文,接受的會是亂碼。

例如:

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。

推薦閱讀:

TAG:字元編碼 | URL編碼 | 中文亂碼 |