escape(string)  
unescape(string)

解决方案 »

  1.   

    http://community.csdn.net/Expert/TopicView3.asp?id=5365048再看看这个
      

  2.   

    xxx = encodeURI(xxxx); //编码
    xxx = decodeURI(xxxx); // 解码
      

  3.   

    mingxuan3000(铭轩) 和 gzdiablo() 你们提供的函数,编码后的结果,都和测试的结果不一致.至于 mingxuan3000(铭轩) 提供的那篇帖,以前已经看过了.但中间少一个 % .能帮忙解决一下吗?
      

  4.   

    1、我猜想你是为了baidu而来。如果是,另一种解决方案见文末;2、用ultraedit查看了一下,其实是求中文字符的16进制字符代码。用这种思路,暂时我没有得到什么结果(toString(16)直接返回 String 对象的值,没用)。继续思考中……===========以下代码=================<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>中文16进制字符代码</title>
    </head>
    <body>
    <script language="javascript">
    s="刘德华 音乐";
    //目标:%C1%F5%B5%C2%BB%AA…… document.write("<p>old: " + s);
    //刘德华 音乐 document.write("<p>escape: " + escape(s)); //%u5218%u5FB7%u534E%20%u97F3%u4E50
    document.write("<p>encodeURI: " + encodeURI(s));
    //%E5%88%98%E5%BE%B7%E5%8D%8E%20%E9%9F%B3%E4%B9%90 document.write("<p>encodeURIComponent: " + encodeURIComponent(s));
    //%E5%88%98%E5%BE%B7%E5%8D%8E%20%E9%9F%B3%E4%B9%90 document.write("<p>toString: " + s.toString(16));
    //刘德华 音乐
    </script>
    <script language=javascript>
    //楼上mingxuan3000(铭轩)提到用 vb hex,改进
    var str=s;
    var returnStr="";
    for(var i=0;i<str.length;i++)
    {
    execScript("temp = hex(asc('"+str.charAt(i)+"'))","VBScript");
    returnStr += temp;
    }
    document.write("<p>vb hex: " + returnStr);
    //C1F5B5C2BBAA20D2F4C0D6 document.write("<p>vb hex2: " + returnStr.replace(/(..)/g,"%$1"));
    //%C1%F5%B5%C2%BB%AA%20%D2%F4%C0%D6,用正则替换,完成目标 //测试
    var t = returnStr.replace(/(..)/g,"%$1")
    document.write("<p>测试一下:<a href='http://www.baidu.com/s?cl=3&wd=" + t + "'>百度搜索</a>"); document.write("<p>其实呢,baidu 还有一个隐藏参数“ie=UTF-8”: ");
    document.write("<p><a href='http://www.baidu.com/s?cl=3&ie=UTF-8&wd=" + encodeURI(s) + "'>百度搜索(utf-8)</a>");
    </script>
    </body>
    </html>