/**
* 21:24 2006-10-12
* @author blackbat
* @title jsp中文亂碼終極解決方法
*/
* 21:24 2006-10-12
* @author blackbat
* @title jsp中文亂碼終極解決方法
*/
let's go。
一 找出問題的根源
亂碼可能出現的地方:1 jsp頁面中
2 jsp頁面之間相互傳參的參數
3 與數據庫中數據的存取
基本歸納為以上幾種。
二 尋找解決方案
1 出現在jsp頁面中,是由于沒有設置jsp頁面的中文字符編碼。
2 出現在jsp頁面之間相互傳參,是由于參數沒有設置正確的字符編碼。
3 以上2個問題解決了,那么存到數據庫中,自然就不存在亂碼。除非你對存入到數據庫里的數據再次進行編碼。
一 找出問題的根源
亂碼可能出現的地方: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 " ); %>
請大家有什么想法,以及有什么不對的地方請各位說明,寫在留言上,大家一起討論。
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 " ); %>
請大家有什么想法,以及有什么不對的地方請各位說明,寫在留言上,大家一起討論。
轉載自:http://www.aygfsteel.com/blackbat/archive/2008/04/27/74865.html