轉載 http://blog.csdn.net/csh624366188/article/details/6657350
一 找出問題的根源
亂碼可能出現的地方:1 jsp頁面中
2 jsp頁面之間相互傳參的參數
3 與數據庫中數據的存取
基本歸納為以上幾種。
二 尋找解決方案
1 出現在jsp頁面中,是由於沒有設置jsp頁面的中文字符編碼。
2 出現在jsp頁面之間相互傳參,是由於參數沒有設置正確的字符編碼。
3 以上2個問題解決了,那么存到數據庫中,自然就不存在亂碼。除非你對存入到數據庫里的數據再次進行編碼。
三解決方法:
1的解決方法
<% @ page contentType = " text/html;charset=gb2312 " %>
加上這句解決jsp頁面中的中文亂碼顯示,tomcat編譯完后向客戶端輸出的html文件不是采
用中文編碼,所以會導致亂碼產生。
2的解決方法
2.1
<% request.setCharacterEncoding( " gb2312 " ); %>
加上這句解決jsp頁面中的中文參數傳遞亂碼。
因為瀏覽器默認使用的編碼是“UTF-8”發送請求參數。
我們把它改為"gb2312"就ok了。
2.2
String(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");
這句的意思是,把傳來的參數全部編碼轉換成gb2312,這樣做的缺點是每次傳來一個參數
都要這樣寫,很麻煩。
同樣可通過設置server.xml配置文件來實現。
< Connector port ="8080" maxHttpHeaderSize ="8192" maxThreads ="150" minSpareThreads ="25" maxSpareThreads ="75" enableLookups ="false" redirectPort ="8443" acceptCount ="100" connectionTimeout ="20000" disableUploadTimeout ="true" URIEncoding ="gb2312" /> 但是這樣就應用到整個webapp中去了。 另: <% @page pageEncoding = " gb2312 " %> 此句是為了讓jsp編譯器能正確地解碼含有中文字符的jsp頁面。 其它方法還可以修改web.xml文件,配置一個過濾器。其原理都一樣,只是換種方式而已。 有的書上專門寫了一個函數來解決亂碼,實際上對比一下就知道那種解決方法的好與壞。 回過頭來一看,解決亂碼也不過如此。 ok,實際就加上這3句搞定問題。 <% @page pageEncoding = " gb2312 " %> <% @ page contentType = " text/html;charset=gb2312 " %> <% request.setCharacterEncoding( " gb2312 " ); %>