今天遇到一個問題,寫的好好的一個下載,本地下載沒問題,結果部署到服務器上就出問題,查了好久才找到問題所在,記錄一下引以爲戒。
服務器上 tomcat/conf/server.xml上設置了URIEncoding爲UTF-8,
那麼默認request的編碼是iso8859-1,
我又加了上段代碼
String name = request.getParameter("name");
name = new String(filename.getBytes("iso8859-1"),"utf-8");
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
1、你這種情況往往是在http請求get傳輸參數方式的時候,web容器是tomcat,而tomcat的默認編碼是iso8859-1。
2、若爲iso8859-1,而你的項目非該編碼在接收到中文類字符時,即會出現亂碼。
3、解決方法,即是將iso8859-1轉化爲項目編碼如gbk或utf-8,就解決了傳輸過程的中文亂碼問題。
這條connector中是否配置URIEncoding的值,不配置默認爲iso8859-1,如果寫上了如utf-8,你的程序就不需要轉了,如果還轉反而亂碼。
2.在post請求時,就不用考慮該點了,只要寫個字符過濾器全佈設置成utf-8,就可以避免亂碼了。