在jsp頁面中,設置頁面的存儲編碼和頁面輸出時的編碼:
<%@ 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");轉化編碼
推薦使用第二種方式。