<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
這樣,就統壹了編碼為utf-8。
這種方式在post提交表單中含有中文時沒有問題。但是在用get提交時,如果含有中文,就會出現類似於“? ? ?”的亂碼問題。為什麽會這樣呢,造成這種現象的原因是Tomcat對get和post兩種提交方式的處理方法不壹樣造成的。自從Tomcat5.x開始,GET和POST方法提交的信息,Tomcat采用了不同的方式來處理編碼,對於POST請求,Tomcat會仍然使用request.setCharacterEncoding方法所設置的編碼來處理,如果未設置,則使用默認的iso-8859-1編碼。而GET請求則不同,Tomcat對於GET請求並不會考慮使用request.setCharacterEncoding方法設置的編碼,而會永遠使用iso-8859-1編碼。
解決辦法如下:
1.配置tomcat的配置文件server.xml裏這句:
<Connector URIEncoding="GB2312"
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
加上這句:URIEncoding="GB2312"
2.使用String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"GB2312");轉化編碼
推薦使用第二種方式。
@RequestMapping(value="/edit",method={RequestMethod.POST},produces = "application/json; charset=utf-8") //這種解碼方式只對post提交方式有效
註:
若是您的項目是用maven來控制的,第壹種在server.xml 中添加URIEncoding="gb2312" 有時候會不太好用,因為maven有clean功能,每次清空都會將這個文件重新寫壹遍,所以您添加進去的這句話就不太有用了。需要每次項目用maven 清空重新加載之後再次修改server.xml這個文件。相對來說比較麻煩。