现状:
一、因为是两个应用之间的参数传递,所以页面的编码格式不一样。
二、应用A的JSP的
 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    应用B的JSP的
 <%@ page contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>
    可能页面本身编码和charset没关系,但是现在参数传递确实面临这个问题。三、现在,想要解决的是UTF-8的请求数据,到gb2312的乱码问题。本人在应用B的JSP中做了,
new String(utf8_name.getBytes(), "gb2312");
new String(utf8_name.getBytes("iso-8859-1"), "gb2312");
new String(utf8_name.getBytes("UTF-8"), "gb2312");

等转码处理,都不能成功,
加了request.setCharacterEncoding("gb2312");段也不行
上网查了下,有的说是按照上面做的,有的是给了一大串的代码。
问:
现在不明白要怎么搞,请教各位遇到这种问题如何处理啊?

解决方案 »

  1.   

    请求之前先用gb2312 encode一下。
      

  2.   


    那你为什么不把你的应用B改成UTF8编码?
      

  3.   

    我现在要做的,只是在应用A和应用B间,搭个接口JSP,将应用A的数据能够搞到应用B来。
      

  4.   

    JAVA编码确实比较难以掌握,总是碰到这样那样的乱码问题。new String(utf8_name.getBytes("UTF-8"), "gb2312");这也是我首先能想到的解决方案,但不行。
      

  5.   

    问2个问题
    1. A中的页面是post过来的?
    2. B中JSP的代码能不能全一点。回答之前,可以拿
    new String(utf8_name.getBytes("GB2312"), "UTF-8");
    先试一下
      

  6.   

    问题1:确实是Post传递的。
    问题2:给部分吧,太多了。//UTF-8编码传过来的参数
    String utf8_city_name = request.getParameter("city_name");
    //我认为的UTF-8到gb2312的转码方法,不行。
    String city_name = new String(utf8_city_name.getBytes("UTF-8"), "gb2312");第三:刚才你给的代码,我试了下,不行。而且,我也没理解你代码的意思,呵呵。
    望指教
      

  7.   

    模拟了一个,不在两个不同应用间跳转页面。
    直接在同一个应用下,两个不同的JSP间,
    用post方法,传递参数。A.JSP的charset是utf-8。
    如下:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>B.JSP的charset是gb2312。
    如下:<%@ page contentType="text/html; charset=gb2312" pageEncoding="gb2312" buffer="50k"%>
    在B.jsp中,输出A.jsp传递过来的参数,
    用以上的转码方式后还是乱码。
      

  8.   

    要多一点代码的意思是并不是这一行代码对整个事情起作用。
    既然你不方便给,我的这两个页面你参考一下吧。
    a.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="b.jsp" method="post">
    <input type="text" name="hello" />
    <input type="submit" />
    </form>
    </body>
    </html>
    b.jsp:<%@ page language="java" contentType="text/html; charset=GB2312"
        pageEncoding="GB2312"%>
    <%request.setCharacterEncoding("UTF-8"); %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB2312">
    <title>Insert title here</title>
    </head>
    <body>
    ${param.hello}<br/>
    </body>
    </html>
      

  9.   

    晕了,我做了个简单的测试  ,咋没有出现乱码呢? 奇怪,你是不是两个jsp中间 通过某个类处理了?在详细点描述一下一般情况下。utf-8--》GB2312 
    1、utf-8——》unicode--》gb2312 就是 new String(utf8_name.getBytes(), "gb2312");
    2、new String(utf8_name.getBytes("iso-8859-1"), "gb2312");你都测试过了,还是没有解决,那么我想肯定涉及到第三个东西,如web.xml中定义的过滤器,某个类等等
      

  10.   

    12#,
    你的代码,是加了<%request.setCharacterEncoding("UTF-8"); %>这个之前实验了,现在结合13#的,我把web.xml的过滤器去掉,
    用最简单的代码来测试下,看下效果。
      

  11.   

    12#的那段我加进去试了下,确实乱码解决了,<%request.setCharacterEncoding("UTF-8"); %>然后结合13#的,问题不在过滤器上。让我郁闷的是,我之前也加了这块,但是最后的参数是
    【gb2312】
    ,没理解这个方法的含义,我瞎搞了
      

  12.   

    setCharacterEncoding:
      用来规范请求页面传递过来的数据编码。之前的理解偏差太大了。