0

w3schools でこのアドレスにアクセスすると、Enter キーを押してページを読み込むとすぐに、アドレスの %28 が自動的に Firefox のアドレス バーの ( にデコードされます。

http://www.w3schools.com/TAGS/html_form_submit.asp?text=%28Hello+G

ただし、このアドレス (最後に追加の %) にアクセスすると、アドレスはアドレス バーに書き換えられません。

http://www.w3schools.com/TAGS/html_form_submit.asp?text=%28Hello+G%

誰でもこの動作を説明できますか? 私が取り組んでいる AJAX 呼び出しで問題が発生しています (document.location.hash 値から Web ページをリクエストすると、エンコードされた文字が自動的にデコードされ、CodeIgniter を使用しているため、デコードされた文字は許可されません。

4

1 に答える 1

-1

Firefox は有効なアドレスのみをデコードしているため、「text=%28Hello+G%」は変更されません (正しくエンコードされた「%」文字は「%25」です)。

%28Hello+G - valid, decoded: (Hello G
%28Hello+G% - invalid: %28Hello+G%
%28Hello+G%25 - valid, decoded: (Hello G%

可能な解決策:

  1. urlencode の代わりに url safe base64 (http://www.php.net/manual/en/function.base64-encode.php#103849) で URL をエンコードします。

  2. urlencoding 後に「%」文字を別のものに変更する

于 2011-07-07T13:30:17.080 に答える