轉載 http://blog.csdn.net/csh624366188/article/details/6657350html
一 找出問題的根源
亂碼可能出現的地方:1 jsp頁面中
2 jsp頁面之間相互傳參的參數
3 與數據庫中數據的存取
基本概括爲以上幾種。
二 尋找解決方案
1 出如今jsp頁面中,是因爲沒有設置jsp頁面的中文字符編碼。
2 出如今jsp頁面之間相互傳參,是因爲參數沒有設置正確的字符編碼。
3 以上2個問題解決了,那麼存到數據庫中,天然就不存在亂碼。除非你對存入到數據庫裏的數據再次進行編碼。
三解決方法:
1的解決方法
web
<% @ 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配置文件來實現。
tomcat
< 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 " ); %>