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

tomcat5.5加了过滤器,设置了URIEncoding之后,firefox正常,ie6.0出现的三个字符的最后一个乱码
提交页和请求页文件都是UTF-8格式存储
1.两个文件都设置了
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8");%>
post方式正常,get乱码
2.请求页参数获得使用new String(s.getBytes("ISO-8859-1"), "UTF-8"),一切正常
3.不使用new String(s.getBytes("ISO-8859-1"), "UTF-8")方式,而加上过滤器SetCharacterEncodingFilter,post正常,get乱码
4.在使用过滤器的基础上修改server.xml配置,增加URIEncoding="UTF-8",无论是否使用<%@ page contentType="text/html; charset=UTF-8"%>和<%request.setCharacterEncoding("UTF-8");%>firefox都正常,ie6在我测试的范围内2个字符和3个字符以上都正常,但是以get方式提交的3中文字符却出现最后一个字符乱码。

请高手指教
附提交页和请求页代码。
提交页
文件名:index.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8");%>
<html>
<head>
<title></title>
</head>

<body>
<form action="dologin.jsp" method = "post">
<input type="text" name="username" />
<input type="submit" value="提交" />
</form>
<a href="dologin.jsp?username=测试是">新页面</a>
</body>
</html>
请求页
文件名:dologin.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8");%>
<html>
<head>
<title></title>
</head>

<body>
<%
String username = request.getParameter("username");
out.println(username);
%>
</body>
</html>

------解决方案--------------------
<%request.setCharacterEncoding("UTF-8");%> 
是基于浏览器的,post是基于服务器的,而get是基于浏览器的,
你当然会出错
你用post 别用get就好
------解决方案--------------------
同意楼上的看法
------解决方案--------------------
编码问题一直不清楚
一楼能不能说清楚点? 学习一下
------解决方案--------------------
提交页中把要提交的数据用url类两次encode数据,请求页中把获得的数据一次decode,问题解决。你出现的问题原因在于:用GET方法时,浏览器编译请求参数数据:forfox浏览器是以UTF-8 encode数据,而IE6是以本地计算机的编码进行encode.而如果你的计算机是GBK,GB2312或者GB18030
,用GBK,GB2312或者GB18030进行encode,用UTF-8 decode,你想他能不出现乱码么?


------解决方案--------------------
你可以修改一下tomcat下面的配置文件试一下,Tomcat5.5\conf下的server.xml文件中
 <Connector
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />加上一句这个URIEncoding="编码方式"
------解决方案--------------------
4楼说得很详细啊
学习了
------解决方案--------------------
乱码问题,一直是一个很头疼的问题的呢,再加个Mysql 数据库,那就更有点意思了呢,纯文本的话,应该问题不是很大的呢....应该有一个通用的解决办法 但也因,人而而啊,每人人遇到的问题,相似,但也有异..希望能得到,更好的解决办法的啊.