我通过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下中文长度为奇数时取得的结果不正确

解决方案 »

  1.   

    不会吧 我觉得我的tomcat 5.0还不错,比5.5好多了。那个版本高,兼容强,本来是错的,他却能硬是启动了,但是有不能正常运行代码(因为实际上是错的) 。反而不好调试。我5.0的就直接报错了,方便找错误。String strKey = hreq.getParameter(SEARCH_KEY_PARAMETER);  // 接受传来的参数
    strKey=new String(strKey.getBytes("ISO-8859-1"),"UTF-8"); // 转换参数类型(转成泥需要的,我是UTF-8,你可以用GBK/gb2312)
      

  2.   

    to SDMRauquin(冷月无心) 
    我的代码和你的一样,只是参数名不同,在5.0下没问题,但在4.1下时用,strKey=new String(strKey.getBytes("ISO-8859-1"),"UTF-8"); 转换前println出来是中文,转换后是乱码
      

  3.   

    其实问题就在于,为什么同样的url,同样用request.getParameter取在4.1下取时println的是
    T66.姓名='张吉森'在5.0取时println的就是
    T74.?§????='?????????'
      

  4.   

    这个问题有地方需要搂主注意:
    http://www.nk975.com/sswater/myref/index.asp?id=17
      

  5.   

    多谢光杆,问题解决
    由你的提示,在网上查了一下useBodyEncodingForURI,发现在server.xml的connector中加入 URIEncoding="UTF-8" useBodyEncodingForURI="true",就一切OK了