请教一下大家, 用excape和unescape转过后,为什么中间少了一个空格呢?
<SCRIPT LANGUAGE="JavaScript">
<!--
a="|  |";  //此处中间有2个空格b = escape(a);
document.write(b + "<br>");  c = unescape(b);
document.write(c);  //write出来中间只有一个空格了
//-->
</SCRIPT>

解决方案 »

  1.   

    没有少空格。你上面的a中只有1个空格 a = "|  |"; //此处中间有2个空格        b = escape(a);
            document.write(b + "<br>");        c = unescape(b);
            document.write(c); //write出来中间只有一个空格了
            document.write(c.length);
      

  2.   

    奇怪了, 我是2个空格发贴的,那是发贴的时候,系统去掉了一个空格, 你可以用2个空格测试<SCRIPT LANGUAGE="JavaScript">
    <!--
    a="|  |";  //此处中间有2个空格,如果发贴后变成一个,大家可以自己输入2个测试b=escape(a);
    document.write(b + "<br>");  c=unescape(b);
    document.write(c);  //write出来中间只有一个空格了
    //-->
    </SCRIPT>
      

  3.   

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    a="|  |"; //长度是4(空格两个)b=escape(a);
    alert(a.length);//是两个空格(长度是4)c=unescape(b);
    alert(a.length);//依然是两个空格(长度是4)
    //-->
    </SCRIPT>可能是浏览器看不出
      

  4.   


    <SCRIPT LANGUAGE="JavaScript">
    <!--
    a="|  |"; //长度是4(空格两个)b=escape(a);
    document.write(a);//是两个空格(长度是4)c=unescape(b);
    document.write(a);//依然是两个空格(长度是4)
    //-->
    </SCRIPT>//两次输出一样的,浏览器看不出来,就算你输出100个空格也是现实1个
      

  5.   

    你在浏览器(html)中输出a                    b(两个字母中间无论多少个空格都是当一个用)
      

  6.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>space.html</title>

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="this is my page">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <SCRIPT LANGUAGE="JavaScript">
    <!--
    var a="|  |";  //此处中间有2个空格,如果发贴后变成一个,大家可以自己输入2个测试
    alert(a + ":" + a.length);
    var b=escape(a);
    alert(b+ ":" + a + "<");
    document.write(b + "<br>");  

    var c=unescape(b);
    alert(c + ":" + c.length);//这里有空格的
    document.write(c);  //write出来中间只有一个空格了,可能是write忽略空格了
    document.write("有  2个空格");//比较这2行代码就知道了,用|或不用的区别;所以去掉“|”就没有错误了
    document.write("有|  |2个空格");
    //-->
    </SCRIPT>
      </head>
      
      <body>
      </body>
    </html>
      

  7.   

    document.write("有    4个空格");
    document.write("有|    |4个空格");
    document.write用了|线就会忽略空格了
      

  8.   


    应该不是|的问题, 我是为了看上去明显才用的|, 其实用其它字也是一样的。
     你的第一行document.write("有 4个空格");  显示也是一个空格其它我用write是测试用的, 我原本的代码是付值给一个div1.比如从数据库取值,取得字符串:  "有    4个空格"
    2.escape后放在URL里传参数:?p=%u6709%20%20%20%204%u4E2A%u7A7A%u683C
    3.从URL取参数:c= unescape(p)
    3.div.innerHTML = c  //这时,div显示少了空格。
      

  9.   


    document.write("有    4个空格");
    document.write("有|     |4个空格");放到script中运行下看看有没有不同
      

  10.   

    html中会忽略在标签附近重复的空格。这样就清楚了,只是输出的问题和unescape没有关系。
    a="|  |";  //此处中间有2个空格,如果发贴后变成一个,大家可以自己输入2个测试b=escape(a);
    document.write(b + "<br>");  c=unescape(b);
    document.write(c.replace(/ /g, "&nbsp;"));  //write出来中间只有一个空格了
      

  11.   

    你是说 div.innerHTML ,也会忽略吗?
      

  12.   

    重新补充问题,换一个用例,如何让DIV显示的空格数量不少?
    <body>
    <div id="div1" style="BORDER-BOTTOM: 1px solid;BORDER-BOTTOM-COLOR: #FF0000;width:500px;" ></div>
    </body><SCRIPT LANGUAGE="JavaScript">
    <!--
    a="%u6709%20%20%20%204%u4E2A%u7A7A%u683C";  //有 4个空格b=unescape(a);
    alert(b);
    div1.innerHTML = b; //执行完毕后,Div里只有1个空格?//-->
    </SCRIPT>
      

  13.   

    搞定了, 谢谢大家, 先把空格替换成&nbsp; 再付给DIV就不会少空格了:<body>
    <div id="div1" style="BORDER-BOTTOM: 1px solid;BORDER-BOTTOM-COLOR: #FF0000;width:500px;" ></div>
    </body><SCRIPT LANGUAGE="JavaScript">
    <!--
    a="%u6709%20%20%20%204%u4E2A%u7A7A%u683C";  //有 4个空格b=unescape(a);
    b=b.replace(new RegExp(" ","gm"),"&nbsp;") 
    div1.innerHTML = b; //执行完毕后,Div里只有1个空格?//-->
    </SCRIPT>
      

  14.   

    晕,代码里不支持红色字体的,重新发一下
    <body>
    <div id="div1" style="BORDER-BOTTOM: 1px solid;BORDER-BOTTOM-COLOR: #FF0000;width:500px;" ></div>
    </body><SCRIPT LANGUAGE="JavaScript">
    <!--
    a="%u6709%20%20%20%204%u4E2A%u7A7A%u683C";  //有 4个空格b=unescape(a);
    b=b.replace(new RegExp(" ","gm"),"&nbsp;") 
    div1.innerHTML = b; //执行完毕后,Div里只有1个空格?//-->
    </SCRIPT>