var a = "技术问题";
var b = escape(a);
var c = unescape(b);

解决方案 »

  1.   

    转换后应该不是标准的英文编码,因为在java里面如果是用英文编码方式显示中文的话,显示的是????这种问号形式的,但用了上面的方法后得到的却好像是十六进制一样的,而且刚才试过了,转换后再在java里面将转换后的字符编码用中文编码显示,却出现不能转换而出错!是不是这种方法不行?
      

  2.   

    你要在java里面用啊,又不早说。看看这个:java版的escape/unescapehttp://www.csdn.net/develop/read_article.asp?id=13437
      

  3.   

    没有听说过所谓的“标准的英文编码”这个东西,你说的是base64编码吗?
      

  4.   

    是这样的,原来我在一个form里面是有一个文本框参数名为 para 的,想传到servlet里面,但就是因为这个form是兼上传文件用,所以在form中其他的参数在servlet里面根本就不起作用,试过用hidden也不行,现在唯有在servletGet?para=a这种在后面加上参数的形式传入去servlet了,但用这种形式有一个缺点就是,当a是数据或英文时传入去无问题,可以得到值,但如果是中文的话,在servlet里面得到也不是什么好像其他的显示如???这样的乱码,这时得到的是一个NULL值来的,所以就想办法看有没有办法在外面先将中文字符转换成英文编码再传入去啦,在servlet里面是有中文显示处理的!
      

  5.   

    通过url传参数应该是utf-8编码的(看浏览器怎么设了),这两个函数也许用得上:
    public static String  unencode  (String src)
    {
    try
    {
    return new String(src.getBytes("iso8859-1"),"UTF-8").trim();//按utf-8解码,编码为unicode
    }
    catch (Exception e)
    {
    System.out.println("无法重新编码 >>"+src+"<<\n"+e.getMessage());
    e.printStackTrace();
    return src ; //不编码直接送回
    }
    } public static String  encode (String src)
    {
    try
    {
    return new String(src.getBytes("UTF-8"),"iso8859-1").trim();//按unicode解码,编码为utf-8
    }
    catch (Exception e)
    {
    System.out.println("无法重新编码 >>"+src+"<<\n"+e.getMessage());
    e.printStackTrace();
    return src ; //不编码直接送回
    }
    }当然也可以先escape了再放进url,servlet里面再用我上面贴的函数unescape回去。
      

  6.   

    http://www.csdn.net/Develop/read_article.asp?id=15052
      

  7.   

    刚才试过了,在外面直传,然后在servlet里面用:String para= request.getParameter("para");
    String ss = new String(para.getBytes("UTF-8"),"ISO-8859-1");
    System.out.println("----------ss----------------"+ss);还是不行,一样的结果请问如果不用javascript提供的方法,而是用java提供的方法(就如你上面所写的一样),如何直接在外面用上面的方法转换javascript里面的参数的,不知道怎样写,例如:function getPara(){
    var a = document.form1.para.value;
    <% 这里应怎样写,好像java与javascript不能混合写在一起的 %>
    ...
    }
      

  8.   

    wealth:
    http://www.csdn.net/expert/topic/1043/1043280.xml?temp=.5397608秋水:真有你的,那么大一个编码表你也写到js里面去了呵呵。
      

  9.   

    里面的方法,刚才上面有试过已经不行啦这样啦,其实我还有一个想法,就是在javascript中将var para中的这个para直接赋值给java里面的一个变量getParaValue,只要能在外面将javascript的变量para能够赋给servlet里面的getParaValue,事情也可以算搞定了,但还是上一个问题,不知在javascript里面怎样写?function getPara2(){
    var para = document.form1.para.value;
    <% 怎写 %>
    ...
    }
      

  10.   

    “在javascript中将var para中的这个para直接赋值给java里面的一个变量getParaValue”是不行的。等你搞清楚了jsp的运行原理就明白了。
      

  11.   

    给你写了个例子:test.html:
    ------------------------------------------------------------
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>emu</title>
    </head>
    <body>
    <form name=form1>
    <input name=text1 value="秋水无恨">
    <input name=text2 value="是个大坏蛋">
    <button onclick="location='http://localhost:8080/jsp/look.jsp?para1='+escape(text1.value).replace(/%/g,'%25')+'&para2='+escape(text2.value).replace(/%/g,'%25')">test</button>
    </form>
    </body>
    </html>
    ------------------------------------------------------------
    look.jsp
    ------------------------------------------------------------
    <%@ page session="true" %>
    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page import="com.PUBLIC.Functions"%>
    <html>
    <head>
    <title>测试页面</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <body>
    <%
    out.println(Functions.unescape(request.getParameter("para1")));
    out.println(Functions.unescape(request.getParameter("para2")));
    %>
    </body>
    </html>
    ------------------------------------------------------------其中Functions.java定义了escape和unescape函数。
    在tmocat下通过。
      

  12.   

    你应该解决的是jsp的中文参数问题而不要妄图用js来绕过。
    而前者已经有数以万计的帖子讨论过了,只要你不是白痴或者懒汉,肯定可以解决的。
      

  13.   

    thank you但还想问一下,我这一个jsp页是共用的,只有一个table和一个form的,是要被其他页包含的,请问如何在这个共用的jsp页中,在javascrip中将地址重新指向当前显示的页,即相当于重新打开窗口的这一页一样?是想:
    function getPara(){
    <% 
       String x1 = request.getParameter("para");
       if(x1 != null){
    %>   getPara3();<% }else{ %>
       //在这里定向返回到窗口的这一页,假如地址是:... gotopage,则下面
       //在地址后面加上一个参数para,形式如:
       ...gotopage?para="+para;
       //然后在这里就执行定向
       //请问要怎样实现,即先想得到自己传给自己的参数,最后再提交不带参数的表单,
    }   function getPara3(){
        <% String x = request.getParameter("para"); %>
        <% InsideServlet.getParaValue = x; %>
        fo.action="gotoservlet";
        fo.submit();
    }可不可以的?
      

  14.   

    To:hax(海曦)现在情况和那些中文参数问题不同而论!!!
    前几次问同样的问题,有些说不能同时上传文件和同时得到参数的,还叫我用smartUpload组件,这怎么能算是解决问题呢,至于一般的中文参数问题,我不知看了多少次,但还是不能解决这一个!!!!!!
      

  15.   

    --------------------------------------------------------------
    但还想问一下,我这一个jsp页是共用的,只有一个table和一个form的,是要被其他页包含的,请问如何在这个共用的jsp页中,在javascrip中将地址重新指向当前显示的页......
    --------------------------------------------------------------
    jsp放在内嵌框架(iframe)里面,
    jsp中的表单定义的时候:
    <form target="_parent"......或者script重定向页面的时候
    <script>
    ...
    parent.location=......
    ...
    </script>
      

  16.   

    hax(海曦):我还是那句老话,有时候(特别是做项目的时候)怎么快怎么好。我那时为了xmlhttp的中文问题看了好多帖子,csdn的msdn的都看了,每个都号称彻底解决了,每个的解决方法都不同,我用的时候偏偏每个都不行(人倒霉的时候就这样了,喝凉开水都噎死)。最后自己写了escape和unescape函数才总算搞定。现在看来,虽然数据冗余了几倍,但是却是真正彻底解决了这个问题。数据冗余对于小数据量的时候,其实也就不是问题。
      

  17.   

    Thank you so much, emu(ston) !