1.jsp页面内容如下:
<%@ page contentType="text/html;charset=gb2312" language="java" pageEncoding="gb2312" %>
<jsp:forward page="2.jsp">
<jsp:param name="user" value="温故而知新"/>
</jsp:forward>2.jsp面面内容如下:
<%@ page contentType="text/html;charset=gb2312" language="java" pageEncoding="gb2312" %>
<%=new String(request.getParameter("user").getBytes("ISO-8859-1"),"gb2312")%>我是一个菜鸟,也许您看了我的问题,会觉得我很笨,可是我也没办法啊,这个问题困绕了我好几天了.
我想问的是1.jsp中的参数"user"是按照什么编码方式发送给2.jsp的?
request.getParameter("user")接收过来的是什么编码格式?是不是1.jsp用什么编码格式发送的,2.jsp
接收的就是什么编码格式呢,那么默认的是什么格式呢?
还有就是,比如request.getParameter("user")接收过来的是utf-8编码格式那么request.getParameter("user").getBytes("ISO-8859-1")得到的是什么编码格式呢?是把"utf-8"编码转换成"ISO-8859-1"格式吗?如何是这样的话那么2.jsp中如果转换的话<%=new String(request.getParameter("user").getBytes("gb2312")%>不就行了,何必在string中加2个参数呢?最后我想说的是如果运行1.jsp得到的却是乱码,而我直接运行2.jsp?user="温故而知新"则可正常显示.
为什么呢?

解决方案 »

  1.   

    呵呵,我最近写程序也遇到这个问题,也试了很多方法。好像jsp中直接用request取前台form数据,jsp是没有编码即采用gb2312,request.getParameter("user").getBytes("ISO-8859-1"),"gb2312"这个也没用。采用javabean时tomcat好像做了编码,具体原因没没深入研究,好像当时set没编码,从数据库读出时get做了编码。你试试request.getParameter("user")行不行啊。
      

  2.   

    谢谢你楼上的朋友,request.getParameter("user")是可以的,但是我还是想弄懂我上面所提问题的答案,让我们共同关注吧,希望有高手帮助解答.
      

  3.   

    <jsp:param name="user" value="温故而知新"/>
    这种方式可能是直接把值放到request里,然后调用2.jsp,
    而没有与服务器的connector打交道
      

  4.   

    教你个完全不会出现乱码的方法,统一使用UTF-8编码,兼容地球上绝大部分语言
    1,在TOMCAT中的server.xml中的<Connector中添加两个设置
    useBodyEncodingForURI="true" //设置POST和GET使用相同编码
    URIEncoding="UTF-8" //对URI使用utf-8编码处理
    2,程序中使用
    <%@ page contentType="text/html" pageEncoding="UTF-8"%>
    而且程序文件使用UTF-8编码保存(注意这里,在保存是必须选择编码)
    3,在程序中紧跟
    <%@ page contentType="text/html" pageEncoding="UTF-8"%>
    下面加
    <%
    request.setCharacterEncoding("UTF-8");
    %>
    或者在filter中进行这个操作就更好了
    4,数据库的默认编码使用UTF-8
    这样你的程序就可以放心大胆的用了,不用管什么编码问题了