0

フォームに入力された値は、ブラウザによって適切にエンコードされていると思いました。

しかし、この単純なテスト ファイル "test_get_vs_encodeuri.html" は、それが正しくないことを示しています。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
   <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
   <title></title>
</head><body>

<form id="test" action="test_get_vs_encodeuri.html" method="GET" onsubmit="alert(encodeURIComponent(this.one.value));">
   <input name="one" type="text" value="Euro-€">
   <input type="submit" value="SUBMIT">
</form>

</body></html>

送信ボタンを押すと:

encodeURICompenent は、入力値を「Euro-%E2%82%AC」にエンコードします

一方、ブラウザーは GET クエリに単純な「Euro-%80」のみを書き込みます。

  1. 誰か説明してくれませんか?

  2. Javascript を使用して、ブラウザの FORM (windows-1252) と同じ方法ですべてをエンコードするにはどうすればよいですか? (エスケープ関数が機能しない、encodeURIComponent も機能しない)?

それとも、encodeURIComponent が不要な変換を行っていますか?

4

2 に答える 2

5
于 2010-04-10T14:30:18.960 に答える
0
于 2010-04-10T13:56:40.443 に答える