我通过URLEncoder.encode把url中的一个参数包起来,然后在jsp页面中读取,在tomcat4.1与tomcat5.0中取得的值却不同,注意是同一个jsp页面这是我的url
right.jsp?intPage=1&goFields=T66
.%E5%A7%93%E5%90%8D='%E5%BC%A0%E5%90%89%E6%A3%AE'&reportId=1我取goFields的语句
String goFields=request.getParameter("goFields");
System.out.println("-------- goFields:"+goFields);在tomcat4.1中
System.out.println出的结果是-------- goFields:T66.姓名='张吉森'
而在tomcat5.0中
System.out.println出的结果就变成了-------- goFields:T74.?§????='?????????'这是怎么回事呀,有什么办法让这个jsp页面在两个版本下结果一致呀另,我试过不用URLEncoder.encode直接传中文,在4.1下好使,在5.0下中文长度为奇数时取得的结果不正确
right.jsp?intPage=1&goFields=T66
.%E5%A7%93%E5%90%8D='%E5%BC%A0%E5%90%89%E6%A3%AE'&reportId=1我取goFields的语句
String goFields=request.getParameter("goFields");
System.out.println("-------- goFields:"+goFields);在tomcat4.1中
System.out.println出的结果是-------- goFields:T66.姓名='张吉森'
而在tomcat5.0中
System.out.println出的结果就变成了-------- goFields:T74.?§????='?????????'这是怎么回事呀,有什么办法让这个jsp页面在两个版本下结果一致呀另,我试过不用URLEncoder.encode直接传中文,在4.1下好使,在5.0下中文长度为奇数时取得的结果不正确
strKey=new String(strKey.getBytes("ISO-8859-1"),"UTF-8"); // 转换参数类型(转成泥需要的,我是UTF-8,你可以用GBK/gb2312)
我的代码和你的一样,只是参数名不同,在5.0下没问题,但在4.1下时用,strKey=new String(strKey.getBytes("ISO-8859-1"),"UTF-8"); 转换前println出来是中文,转换后是乱码
T66.姓名='张吉森'在5.0取时println的就是
T74.?§????='?????????'
http://www.nk975.com/sswater/myref/index.asp?id=17
由你的提示,在网上查了一下useBodyEncodingForURI,发现在server.xml的connector中加入 URIEncoding="UTF-8" useBodyEncodingForURI="true",就一切OK了