1、形如你的是unicode编码,而非url编码自然不能被unescape解码
2、decodeURI 为js5.5的方法,ie5.5就支持了

解决方案 »

  1.   

    问题一有解决的方法吗?我用decodeURI和decodeURIComponent的用法正确吗?如果是正确的话那为什么问题报错呢?
      

  2.   

    alert(unescape("你好 ,我又来信了"));
    直接用alert!不用加上unescape!
    因为alert会自动进行解码
      

  3.   

    shixueli(渴望成功) 你所说的是这样吗:
    alert(你好 ,我又来信了);
    我这里测试出错喔,麻烦你可以把你所说的写出来吗?
      

  4.   

    你的字符是经过html编码的了,所以用unescape不好用,这个函数只会解escape处理过的字符;你不信可以看document.write(unescape("你好 ,我又来信了"));
    不要unescape也是一样可以输出“你好,我又来信了”,还有用escape解码之后的这一句话根本不是"你好 ,我又来信了"你可一测试一下;你必须经过html解码才能正常显示,所以你用的document.write就好用,因为浏览器会自动进行解码,但是用alert就不会,如果你使用asp.net的话进行html解码很简单,一个函数就构,htmlDecode,关于js如何实现asp.net那样的htmlDecode的功能很多人讨论过,解决方案不是很完美:http://www.csdn.net/develop/Read_Article.asp?Id=15043
    他给的字符集有些是错误的。其实另外还有方法的:
    <html>
    <script>
    function dd()
    {
      var t="&#20320;&#22909; ,&#25105;&#21448;&#26469;&#20449;&#20102;";
      sp.innerHTML=t;
      alert(sp.innerHTML);
    }
    </script>
    <BODY onload="dd()">
    <span id="sp" style="display:none;width:0;height:0;"></span>
    </body>
    </html>
    span设为隐藏,目的就是利用他的解码过程,注意不要用sp.innerText!
    --
    有问题再讨论:)
      

  5.   

    不好意思,又说错了,
    你那些字符不是经过html编码,而是unicode,经过html编码变成的不是那样的:)
      

  6.   

    非常感谢 shixueli(渴望成功) ,但还有个问题就是为什么我用decodeURI和decodeURIComponent这两个函数时问题报错呢,能说说这两个函数的用法吗?
      

  7.   

    decodeURI不能对escape编码之后的字符串进行解码,这个方法对应的是encodeURI:下面是decodeURI,encodeURI,decodeURIComponent,encodeURIComponent的用法:

    decodeURI 方法
    返回一个已编码的统一资源标识符 (URI) 的非编码形式。decodeURI(URIstring)必要的 URIstring 参数代表一个已编码 URI 的值。说明
    使用 decodeURI 方法代替已经过时的 unescape 方法。decodeURI 方法返回一个字符串值。如果 URIString 无效,那么将产生一个 URIError。

    encodeURI 方法
    将文本字符串编码为一个有效的统一资源标识符 (URI)。encodeURI(URIString)必选的 URIString 参数代表一个已编码的 URI。说明
    encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。请使用 encodeURIComponent 方法对这些字符进行编码。

    decodeURIComponent 方法
    返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。decodeURIComponent(encodedURIString)必选的 encodedURIString 参数代表一个已编码的 URI 组件。说明
    URIComponent 是一个完整的 URI 的一部分。 如果 encodedURIString 无效,将产生一个 URIError。

    encodeURIComponent(encodedURIString)必选的 encodedURIString 参数代表一个已编码的 URI 组件。说明
    encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为 encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。
    ----------
    来自js语言参考
      

  8.   

    下面的代码在我的机器(windows 2003 server+vs.net 2003)上面是好用的,
    <html>
    <script>
    function dd()
    {
    var d="你好,我又来信了";
    alert(encodeURI(d));
    alert(decodeURI(encodeURI(d)));
    }
    </script>
    <BODY>
    <input type="button" onclick="dd()" id="btn" value="clickme" name="btn">
    </body>
    </html>