在jsp传递参数过程中,最后获得的中文字符总是乱码,
问该如何解决啊。
示例中是index1.jsp的输入数据,传递到index2.jsp时,将出现中文乱码。index1.jsp<%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%><html>
<head>
<title>POS</title>
</head>
<body>
<form name="frm1">
<input type="input" name="sss" value="" />
<input type="button" value="submit" onclick="confirm();" />
</form>
</body>
</html>
<script language="javascript">
function confirm()
{
    var value = document.frm1.sss.value;
    alert("-----------" + value);
    var url="index2.jsp?val="+value;
    document.location.href=url;
}
</script>index2.jsp<%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%><html>
<head>
<title>POS2</title>
</head>
<body>
    Value---<%=request.getParameter("val")%>
</body>
</html>

解决方案 »

  1.   

    加一行代码试试:
    request.setCharacterEncoding("gbk");
      

  2.   

    你这种是采用Get提交的方式,服务器就会默认的是服务器内部的ISO-8859-1的编码,所以JavaScript传递中文出现乱码的问题根本上就是服务器提交时候Get方法和Post方法的不同,所以就导致了乱码的出现。具体的解决办法是:
    1)打开tomcat的server.xml文件,找到区块,加入如下一行URIEncoding="GBK",具体的代码如下: 
    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/> 2)重启tomcat,一切OK
      

  3.   

    如果你在其他页面使用了其他的编码格式,比如UTF-8编码格式,并且采用POST的提交格式,这样又可能影响到那边的正常提交,所以要注意了。尽量要统一编码格式,最好用UTF-8的编码格式
      

  4.   

    不用那么麻烦吧
    改成UTF-8
      

  5.   

    恩,确实如楼上所说,改完了就好用了。
    但是,我程序是在Weblogic中发布的,改怎么处理呢?
      

  6.   


    应该注意保持编码一致,如果用gb2312,就全部用gb2312;gbk亦一样。
    个人比较喜欢将这一句放在第二行
    如果用utf-8不会造成乱码的话,推荐全部用utf-8。
      

  7.   


    用Tomcat6.0的话不需要修改,以前用Tomcat5.5时更改过可以解决问题。
    但是不太推荐更改虽然解决了当前的问题,但在某些地方仍会造成乱码,具体哪里不太记得。
    改用Tomcat6.0后只需要注意jsp页面的编码就不会出现问题。
      

  8.   

    weblogic只是WEB服务器,跟乱码没啥关系的啊
      

  9.   

    <%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%>改成
    <%@ page contentType="text/html; charset=GB2312" pageEncoding="UTF-8"%>
      

  10.   

    是啊。
    但是我看解决的方法,是修改Tomcat容器的server.xml文件,
    所以我想问在weblogic下发布,该怎么修改?
      

  11.   

    就是啊,强烈建议以后都是用UTF-8,这样你会避免很多麻烦!
      

  12.   

    有没有能把我提供的代码,稍微修改下,能够在weblogic下发布时,不产生中文乱码的。
    我感觉这样说的,大家都不清晰啊。
    谢谢了,哈哈~
      

  13.   

    应该是request.setCharacterEncoding("gbk");
      

  14.   

    支持上面的说法,这个是一劳永逸的方法,能解决当前应用中所有使用GET提交的乱码问题,GET提交包括在表单中指定、URL后挂参,还有就是脚本提交。
      

  15.   

    我的也出现表单提交汉字内容乱码 但是网页上的汉字就没有问题 我用的都是UTF-8编码呀
     tomcat也改成是UTF-8了呀 不知道为什么 试了加上request.setCharacterEncoding("UTF-8");
    还是不行 不知道为什么
      

  16.   

    method = post 怎么会乱码
      

  17.   

    大家怎么都在说Tomcat中的问题啊 ~
    我想问的是在weblogic下的发布,乱码问题。
    在Tomcat中的修改server.xml的方法已经可行了,
    那么在weblogic中,做如何修改呢?
    ~晕~
      

  18.   

    大哥这个问题很好解决的,,,
     * 乱码处理情况一:(提交中文):
     * 方法1,页面端发出的数据作一次encodeURI,服务器段使用new String(old.getBytes("iso8859-1"),"UTF-8");
     * 方法2,页面端发出的数据作两次encodeURI,服务器段使用URLDecoder.decode(old,"UTF-8")
     * 乱码处理情况一:(返回中文)
     * 在servlet,action中设置流编码:response.setCharacterEncoding("GBK");
      

  19.   

    建议以后都用UTF-8,此编码比较通用。
      

  20.   

    加上这样一句,<%request.setCharacterEncoding("gb2312");%>...
      

  21.   

    大多数的网页编码采用UTF-8格式
    提交请求前加上response.setCharacterEncoding("GBK");
    如果不是采用POST提交的方式,如连接传值方式,Tomcat 的内不会将其转换为ISO-8859-1
    所以要转换可用String str= new String(request.getParameter("XXX").getBytes("ISO-8859-1"),"GBK");
    有机会可以试试!!!
      

  22.   

    <%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%><html>
        <head>
            <title>POS2</title>
        </head>
        <body>
                    <%request.setCharactorEncoding("gb2312");%>
            Value---<%=request.getParameter("val")%>
        </body>
    </html>
      

  23.   

    加一行代码试试: 
    request.setCharacterEncoding("gbk");  加在打印方法之前
      

  24.   

    request.setCharacterEncoding("gb2312")
    上面的方法果然有用。
    但是我在jsp页面的一开始就已经设定
    <%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%>那这句话是干什么的呢,不是编码格式吗?
      

  25.   

    楼主这种方式传送属于get方法传数据,a.jsp中必须对url进行两次encode(url);encode(url);
    然后再b.jsp中对=request.getParameter("val")进行decode.decode代码如下://这里需要进行异常控制,就不一一描述了
    java.net.URLDecoder.decode(request.getParameter("val"),"gbk");
      

  26.   

    在前面加入以下 代码 就行了
    <%
    request.setCharacterEncoding("GBK");
    response.setCharacterEncoding("GBK");
    %>