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="温故而知新"则可正常显示.
为什么呢?
<%@ 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="温故而知新"则可正常显示.
为什么呢?
这种方式可能是直接把值放到request里,然后调用2.jsp,
而没有与服务器的connector打交道
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
这样你的程序就可以放心大胆的用了,不用管什么编码问题了