jsp頁面間傳值亂碼解決

產生亂碼的原因:java在網絡上進行傳輸的時候,用的是iso-8859-1的編碼形式進行傳輸。所以,在編碼和解碼(得到傳遞值)的時候,要對應起來。。

 

解決方法如下:

 

方法一:重新轉碼new String(u.getBytes("iso-8859-1"),"gb2312");

例 :

 

String userName = requset.getParameter("userName");

userName = new String(userName.getBytes("iso-8859-1"),"gb2312");

 

但每次都這樣轉,還是太麻煩了,因此可以寫一個工具類,提供這個將亂碼轉成gb2312.

public class Tools{

//提供一個方法,將亂碼轉化成gb2312

public static String getNewString(String input){

String result = "";

try{

result = new String(input.getBytes("iso-8859-1"),"gb2312");

}catch(Exception e){

e.printStackTrace();

}

return result;

}

 

 

在用的時候,

String userName = request.getParameter("userName");

userName = Tools.getNewString(u);

 

注:在用這種方法時,後面的不一定就是gb2312,可以是gbk,utf-8.具體是哪一種,要取決於向該控制器傳值的頁面是哪個編碼。

 

方法二:.通過配置server.xml文件[不太穩定]

1.         有人說配置tomcat的配置文件server.xml裏這句:
             <Connector URIEncoding="GB2312" 
                port="8080"   maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
 
                加上這句:URIEncoding="GB2312"

2.         雖然可以但是有前提的,若果你過濾器沒有配置,
            則只是配置了server.xml文件,這樣只有在表單是get傳值時候纔可以!
            當是post方式時,照樣是亂碼!
            *這時我們就可以看出在tomcat5中的post與get傳值方式是不一樣的*
            *有人要問有沒有一種方法讓傳值使用get方式或post方式都好用呢,
            就用下面的方法三*

 方法三:

1.         就是先配置過濾器,又配置server.xml文件,都設置成GB2312的編碼
2.         這樣無論是post還是get方式的表單傳值,中文都不會是亂碼!

發佈了14 篇原創文章 · 獲贊 48 · 訪問量 52萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章