为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿晨1998 2021-09-20 14:14:22
一、在地址栏直接输入: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 的参数

查看完整回答
反对 回复 2021-09-23
?
叮当猫咪

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')); 即可以!!!不过我这边编程后是两个都可以...

查看完整回答
反对 回复 2021-09-23
  • 2 回答
  • 0 关注
  • 323 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信