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里这句:
                              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方式的表单传值,中文都不会是乱码!

你可能感兴趣的:(Java)