奇怪!用unescape函数解码出来的一部分字符只能用document.write()的方法来显示? 1、形如你的是unicode编码,而非url编码自然不能被unescape解码2、decodeURI 为js5.5的方法,ie5.5就支持了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题一有解决的方法吗?我用decodeURI和decodeURIComponent的用法正确吗?如果是正确的话那为什么问题报错呢? alert(unescape("你好 ,我又来信了"));直接用alert!不用加上unescape!因为alert会自动进行解码 shixueli(渴望成功) 你所说的是这样吗:alert(你好 ,我又来信了);我这里测试出错喔,麻烦你可以把你所说的写出来吗? 你的字符是经过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="你好 ,我又来信了"; 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!--有问题再讨论:) 不好意思,又说错了,你那些字符不是经过html编码,而是unicode,经过html编码变成的不是那样的:) 非常感谢 shixueli(渴望成功) ,但还有个问题就是为什么我用decodeURI和decodeURIComponent这两个函数时问题报错呢,能说说这两个函数的用法吗? 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语言参考 下面的代码在我的机器(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> 在jquery中的Validate插件中,如何使用errorPlacement?? 怎样实现网页真正的全拼 子页面怎么获得它的父框架的ID 用javascript切换图片在IE6中没有问题,在IE7中显示不出来,急急急 submit控件用javascript实现时的疑惑 如何使点击一个td变色,其他的不变?? 弹出式窗口关闭的时候,如何刷新主窗口 关于弹出窗口的问题 小问题,就TMD一个函数的问题!我就是搞不懂 execCommand 用无刷新显示,为什么整个页面像死机一样点都点不动 在javascript中,如何将:onclick的值传到函数里面去?在函数里面我要用这个值。
直接用alert!不用加上unescape!
因为alert会自动进行解码
alert(你好 ,我又来信了);
我这里测试出错喔,麻烦你可以把你所说的写出来吗?
不要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="你好 ,我又来信了";
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!
--
有问题再讨论:)
你那些字符不是经过html编码,而是unicode,经过html编码变成的不是那样的:)
-
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语言参考
<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>