Javascript unescape()函数无法正常工作
在一个站点中,有以下代码:Javascript unescape()函数无法正常工作,javascript,Javascript,在一个站点中,有以下代码: document.write(unescape('%41%54%50%20%2f%20%20%57%54%41%20%4d%6f%73%63%6f%77')); 这就产生了 ATP / WTA Moscow (Shvedova - Pavlyuchenkova) 但如果运行该代码,我只会得到莫斯科ATP/WTA 知道为什么会这样吗 编辑://这是网站 检查这场比赛 ATP/WTA莫斯科(马卡罗娃-西布尔科娃)这根弦不可能产生另一条线。每个%XX代表一个字母。u
document.write(unescape('%41%54%50%20%2f%20%20%57%54%41%20%4d%6f%73%63%6f%77'));
这就产生了
ATP / WTA Moscow (Shvedova - Pavlyuchenkova)
但如果运行该代码,我只会得到莫斯科ATP/WTA
知道为什么会这样吗
编辑://这是网站
检查这场比赛
ATP/WTA莫斯科(马卡罗娃-西布尔科娃)这根弦不可能产生另一条线。每个%XX代表一个字母。unescape无法神奇地组成不在该字符串中的字符 与编辑。查看页面源代码,您将看到()中的文本不在unescape调用中
<script language='Javascript'>document.write(unescape('%41%54%50%20%2f%20%20%57%54%41%20%4d%6f%73%63%6f%77'));</script> (Kuznetsov - Berlocq)</a></td>
document.write(unescape(“%41%54%50%20%2f%20%20%57%54%41%20%4d%6f%73%63%6f%77”);(库兹涅佐夫-贝洛克)
(Shvedova-Pavlyuchenkova)
正在该代码之后添加
%41%54%50%20%2f%20%20%57%54%41%20%4d%6f%73%63%6f%77
仅代表“ATP/WTA莫斯科”
转义字符串中的每3个字符表示1个可读字符
%=转义和[0-9a-f]=字符的十六进制表示形式
%20=字符32=“”[空格]
%41=character 65=“A”您提供的字符串中有18个编码字符
ATP/WTA莫斯科
长度为18个字符
无论生成什么(Shvedova-Pavlyuchenkova)
,都不是您提供的代码
这就是说,unescape
对于非ASCII字符是断开的,因此也是断开的
这里是网站
括号中的文本作为常规HTML显示在script元素之后。该链接证明了我所说的,只是在上面添加了一个示例。@fufu-正如我所说,HTML的这一部分不是由脚本生成的。它只是出现在HTML中。
str = Array.prototype.map.call('ATP / WTA Moscow (Shvedova - Pavlyuchenkova)', function(x){return '%'+x.charCodeAt(0).toString(16);}).join('');
str === '%41%54%50%20%2f%20%20%57%54%41%20%4d%6f%73%63%6f%77%20%28%53%68%76%65%64%6f%76%61%20%2d%20%50%61%76%6c%79%75%63%68%65%6e%6b%6f%76%61%29';
str !== '%41%54%50%20%2f%20%20%57%54%41%20%4d%6f%73%63%6f%77';