0

あるサイトには次のコードがあります:

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

なぜこれが起こっているのか考えはありますか?

編集://ここにサイトがあります

http://www.frombar.tv/

この一致を確認してください

ATP / WTAモスクワ(マカロワ-チブルコバ)

4

4 に答える 4

1

指定した文字列には18個のエンコードされた文字があります。

ATP / WTA Moscow長さは18文字です。

生成するものが何であれ(Shvedova - Pavlyuchenkova)、それはあなたが提供したコードではありません。

unescapeはいえ、非ASCII文字では壊れているため、非推奨です

こちらがサイトです…</p>

括弧内のテキストは、スクリプト要素の後に通常のHTMLとして表示されます。

于 2012-10-16T13:27:14.180 に答える
0

その文字列が他の行を生成することは不可能です。各%XXは1文字を表します。エスケープ解除は、その文字列に含まれていない文字を魔法のように構成することはできません。

編集して。ページソースを表示すると、()内のテキストがエスケープ解除呼び出しに含まれていないことがわかります

<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>
于 2012-10-16T13:26:11.260 に答える
0

(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]=文字の16進表現

%20=文字32=""[スペース]

%41=文字65= "A"

于 2012-10-16T13:26:41.977 に答える
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';
于 2012-10-16T13:33:56.940 に答える