日期:2014-05-18  浏览次数:20730 次

关于jsp中文乱码这个老话题的又一个新疑问??????????????
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= "温故而知新 "则可正常显示.
为什么呢?

------解决方案--------------------
呵呵,我最近写程序也遇到这个问题,也试了很多方法。好像jsp中直接用request取前台form数据,jsp是没有编码即采用gb2312,request.getParameter( "user ").getBytes( "ISO-8859-1 "), "gb2312 "这个也没用。采用javabean时tomcat好像做了编码,具体原因没没深入研究,好像当时set没编码,从数据库读出时get做了编码。你试试request.getParameter( "user ")行不行啊。
------解决方案--------------------
<jsp:param name= "user " value= "温故而知新 "/>
这种方式可能是直接把值放到request里,然后调用2.jsp,
而没有与服务器的connector打交道
------解决方案--------------------
把1.jsp/2.jsp的代码贴全试试
------解决方案--------------------
关注
------解决方案--------------------
教你个完全不会出现乱码的方法,统一使用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
这样你的程序就可以放心大胆的用了,不用管什么编码问题了