在一个站点中有以下代码:
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 Moscow
为什么会发生这种情况?
编辑:// 这是网站
检查此匹配
ATP / WTA莫斯科(Makarova - Cibulkova)答案 0 :(得分:1)
您提供的字符串中有18个编码字符。
ATP / WTA Moscow
长18个字符。
无论生成(Shvedova - Pavlyuchenkova)
,都不是您提供的代码。
也就是说,unescape
因非ASCII字符而中断,因此deprecated
这是网站......
括号中的文字在脚本元素之后显示为常规HTML。
答案 1 :(得分:0)
该字符串不可能生成其他行。每个%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>
答案 2 :(得分:0)
在该代码之后添加(Shvedova - Pavlyuchenkova)
。
%41%54%50%20%2F%20%20%57%54%41%20%4D%1207%73%63%1207 77%
仅代表&#34; ATP / WTA莫斯科&#34;
转义字符串中的每3个字符代表1个可读字符。
%=转义和[0-9a-f] =字符的十六进制表示
%20 =字符32 =&#34; &#34; [空间]
%41 =字符65 =&#34; A&#34;
答案 3 :(得分:0)
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';