猿问

请教一下,关于JavaScript的encodeURI()与decodeURI()的问题!如下情况

一、在地址栏直接输入:
javascript:str=encodeURI("笃行天下"); alert(decodeURI(str));
然后回车,即可弹出“笃行天下”。
我把str=encodeURI("笃行天下"); 的值记下来,是:"%E7%AC%83%E8%A1%8C%E5%A4%A9%E4%B8%8B";
二、然后我吧地址栏的代码改成:
javascript:alert(decodeURI("%E7%AC%83%E8%A1%8C%E5%A4%A9%E4%B8%8B")); [/code]
弹出的却是乱码。
三、而在页面里这样写:
<BODY>
<Script language="JavaScript">
<!--
alert(decodeURI("%E7%AC%83%E8%A1%8C%E5%A4%A9%E4%B8%8B"));
//-->
</Script>
</BODY>
却也能正常弹出“笃行天下”。
这是为什么呢?为什么二、中是乱码呢?

阿晨1998
浏览 324回答 2
2回答

噜噜哒

原因是 浏览器的地址栏会对%解析,比如%20 会被浏览器的地址栏解析为 空格同样的道理%E7 会被解析 为一个字符, 也是乱码中的第一个字符%AC 会被解析 为乱码中的第2个字符.....alert(decodeURI("%E7%AC%83%E8%A1%8C%E5%A4%A9%E4%B8%8B"));和alert("%E7%AC%83%E8%A1%8C%E5%A4%A9%E4%B8%8B");弹出来的是一样的,换句话说 过程是这样的%E7%AC%83%E8%A1%8C%E5%A4%A9%E4%B8%8B 先被浏览器解析为了乱码,然后再作为 decodeURI 的参数

叮当猫咪

把alert(decodeURI("%E7%AC%83%E8%A1%8C%E5%A4%A9%E4%B8%8B")); 改成alert(decodeURI('%E7%AC%83%E8%A1%8C%E5%A4%A9%E4%B8%8B')); 即可以!!!不过我这边编程后是两个都可以...
随时随地看视频慕课网APP
我要回答