我有这么一个连接
<a href="XlsNameManagerAction?weizhi=Xls表数据管理" target="frameset">Xls表数据管理 </a>传到action中它就变成Xls表数据管? 已有最后一个字变成乱码了,我过滤器都配好了,jsp页面是utf-8的,我过滤其中也是utf-8的,奇怪的是,我要传“数据管理”到action中他打印出来就是“数据管理”没有问题,当我要多加几个字时“Xls表数据管理”,打印出来就变成“Xls表数据管? ”,最后一个字变乱码了,这是怎么回事?

解决方案 »

  1.   

    我看主要是Xls这3个字母搞的。如果是偶数个英文字母+汉字应该没问题。我传中文一般要把服务器的url编码设为UTF-8,然后把要传的参数转编码为UTF-8的。你也可以试试看。不过这玩意比较郁闷,浏览器传送get参数还能自己设置。
      

  2.   

    tomcat 
    conf/server.xml
      <Connector port="8080" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" URIEncoding="UTF-8" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true" />
      

  3.   

    那你在获得值是转一下,如:
    String typename=new String(request.getParameter("typeName").getBytes("iso-8859-1"),"utf-8");
      

  4.   

    你可以参照一下方法应该就可以解决了,我试过了。String uname=new String(request.getParameter("uname").getBytes("iso-8859-1"),"gb2312");
      

  5.   

    我同学出现过这样的问题 传的值的个数为偶数就没问题 奇数就后面的变乱码
      后来把表单提交全用ajax就行了 
      

  6.   

    请求参数,需要编码<a href="XlsNameManagerAction?weizhi=Xls<%=java.net.URLEncoder.encode("表数据管理","UTF-8")%>" target="frameset">Xls表数据管理 </a> 
      

  7.   

    String str=new String(request.getParameter("typeName").getBytes("iso-8859-1"),"utf-8");
    另外,如果汉字为奇数个,则最后一个出现乱码,如果为偶数个,则不会。
    最好的办法其实根本不要用GB2312之类,让页面和数据库统一用UTF8。