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

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

result.jsp的處理代碼如下:

將標(biāo)記1行和標(biāo)記2行都去掉的話在頁面上就會出現(xiàn)中文亂碼,標(biāo)記1和標(biāo)記2保留一個就可以解決這個問題。
(二)get方式的解決辦法
對于form表單采用get方法提交,我們可以采用以下的轉(zhuǎn)換來正常顯示中文
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方式的亂碼問題。