jsp中文亂碼終極解決方法

轉載 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 " ); %>
相關文章
相關標籤/搜索