中文亂碼一直是困擾我們的一個很大的問題,也是很多開發人員希望解決的問題。 本系列文章中采用的環境為Tomcat5.0 + JDK1.5 +mysql5.0。統一編碼為UTF-8
本篇主要是解決jsp頁面之間的post和get方法中出現的亂碼問題,不涉及struts等框架。
(一)
tomcat的j2ee實現對表單提交即post方式提示時處理參數采用缺省的iso-8859-1來處理
我們現在新建2個頁面,在eclipse IDE中,eclipse對jsp文件的默認編碼iso-8859-1,可以通過設置調整為UTF-8。
打開window-> preferences,如下圖所示:

將用紅線框出來的select選擇utf8的。
新建的2個頁面分別為login.jsp和result.jsp;login.jsp提交一個name給result.jsp,result.jsp負責顯示就行。
login.jsp的頁面如下圖所示(采用post提交):

result.jsp的處理代碼如下:

將標記1行和標記2行都去掉的話在頁面上就會出現中文亂碼,標記1和標記2保留一個就可以解決這個問題。
(二)get方式的解決辦法
對于form表單采用get方法提交,我們可以采用以下的轉換來正常顯示中文
name = new String(name.getBytes("iso8859_1"),"UTF-8");
但是如果對于http://localhost:8000/test/result.jsp?name=中文這種提交,上面的方法就沒有效果了。
對于后者,我們的解決方案是:將Tomcat 5.0\conf目錄下的server.xml文件中的
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on the port specified
???????? during installation -->
??? <Connector
port="8000"?????????????? maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
?????????????? enableLookups="false" redirectPort="8443" acceptCount="100"
?????????????? debug="0" connectionTimeout="20000"
?????????????? disableUploadTimeout="true"
??? URIEncoding="UTF-8" />
后面添加了URIEncoding="UTF-8"
這樣我們就解決了get方式的亂碼問題。