一、在地址栏直接输入: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>却也能正常弹出“笃行天下”。这是为什么呢?为什么二、中是乱码呢?
2 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
原因是 浏览器的地址栏会对%解析,比如%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 的参数
叮当猫咪
TA贡献1776条经验 获得超12个赞
把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')); 即可以!!!不过我这边编程后是两个都可以...
添加回答
举报
0/150
提交
取消