我的JS里面 
http://localhost:8888?node=encodeURI("汉字") 这里的JS 是 EXTJS框架tomcat6 设置了 <Connector port="8888" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>JAVA代码里面 String str = new String(sss.getBytes("ISO-8859-1"),UTF-8)
这样获得的参数 str 还是乱码
谁知道什么原因,请帮忙解决下。谢谢了!

解决方案 »

  1.   


    http://localhost:8888?node=encodeURI("汉字")
    好像你的url有问题,你是直接在浏览器的地址栏直接这么请求的?
    这样写的话node的值是encodeURI("汉字")你的意思是node="汉字"对吧。把url拼一下。url = "http://localhost:8888?node=" + encodeURI("汉字");
      

  2.   


    嗯 意思就这样。我的业务比这个复杂,这个是我手敲的。大致意思就是我已经在 JS里面对 汉字部分 encodeURI 转码了。。
      

  3.   

    难道不能用post 提交吗  ?  get()提交处理乱码很麻烦的
      

  4.   

    可能和环境有关。。我如果把 TOMCAT 设置成GBK 的,然后在JAVA中也 用ISO-8859-1转换成GBK 的是可以正常获取的。。
    但正式环境中 。TOMCAT 是用的  UTF-8 ,不允许改成GBK的,所以出问题了。期待有人能帮我解决。
      

  5.   

    在Tomcat\conf\server.xml里面设置字符编码
    tomcat 目录下 conf/server.xml文件
    <Connector port="8001" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
      

  6.   

    jsp的默认编码格式为iso8859-1,所以在获取数据之前要转码。
      

  7.   

    把项目编码、jsp的pageEncoding、tomcat编码统一成utf-8.
    获取的时候不要转码。直接getParameter。再不行在servlet里request.setCharacterEncoding("utf-8")。
      

  8.   

    encodeURI 还不行就改成 post 方式
      

  9.   

    JS里http://localhost:8888?node=encodeURIComponent("汉字")
    java里获取的时候不要转码。直接getParameter
      

  10.   


    request.setCharacterEncoding("UTf-8");
    response.setCharacterEncoding("UTF-8");试试
      

  11.   

    楼上方法不行喔.... 还是乱码 . 并且 我在tomicat 的service.xml 中配置了 utf-8了. 我是在前台js中 用encodeURIComponent() 转成了%E%A什么的形式  并且使用get方式提交 得到跳转后页面的地址栏.  火狐帮我把这乱码重新转成了中文 . 当我直接在地址栏上敲回车时. 没有经过js的encodeURIComponent()时.火狐是帮我把中文在转成了另外%E%A一种不知道什么编码格式,后台接受这样的参数全是����..用IE 就完全没有这种问题... 这浏览器不兼容真扯蛋
      

  12.   

    地址栏的直接输入中文 貌似是按base64转的
      

  13.   

    这个...在java中 使用 sun.misc.BASE64Decoder 转码.. 还是没转回来....
      

  14.   

    我也碰到过 ,用post请求就可以了
      

  15.   

    配置uri并不影响参数部分,所以还是要用iso-8859-1解码,(友情提示,浏览器并没有解错码,解错码的是服务器,它对参数部分以iso-8859-1的码表解码)方式如下:
    String s = new String(this.request.getParameter(name).getBytes("iso-8859-1"),"utf-8");
    楼主试试看这样能解决问题不
      

  16.   

      这样不行的话那么可能你看下你的浏览器设置有没有写死成iso-8859-1等
      

  17.   

    你用js来传URL的话,如果你的js是单独写的,那得检查下你这个文件保存的格式是不是和你设定的格式一致?
      

  18.   

    希望以前研究jsp接收到的参数是乱码的文章可以帮助你,链接如下:
    http://blog.csdn.net/wgw335363240/archive/2010/12/06/6059489.aspx
      

  19.   

    写个过滤器试试,java代码里别转码,我以前也碰过,不过我用的是GBK,get方式关键就是设置一下tomcat里的选项URIEncoding。
      

  20.   

    URI之类的传中文
    最好不用修改tomcat的xml的方式
        <c:forEach items="${fileList}" var="fileName">    
         <c:url value="servlet/DownloadServlet" var="link">
         <c:param name="filename" value="${fileName}" />
         </c:url>
         <a href=${link}>${fileName}</a><br/>
        
        </c:forEach>
    使用c:url来转码servlet上用
    new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
    就好了
      

  21.   

    encodeURI(encodeURI("汉字"))
    转码两次
      

  22.   

    怎么老是有这种问题?Java/Web 版的 GET 请求乱码问题都问烂了!跟 Java SE 版的 new String 产生了多个对象一样!平均一周一问!之前光我回复的这个问题最少就有 10 次。这个回复框上面的“相关问题”就有好多!
      

  23.   

    Google 搜索:tomcat GET 乱码 site:csdn.net
      

  24.   


    var url="sss.do?aa=ff搜索"+new Date().getTime();
    url = encodeURI(url);
    url = encodeURI(url);String aa = request.getParameter("aa");   
    aa = java.net.URLDecoder.decode(aa,"UTF-8");   
      

  25.   

      get方式提交是ASCII码不支持unicode编码!所以建议使用post提交!
        灵活运用嘛,呵呵!
      

  26.   

    页面转码:encodeURI(encodeURI("汉字"))Java转码:java.net.URLDecoder.decode(type,"UTF-8")