フォームに入力された値は、ブラウザによって適切にエンコードされていると思いました。
しかし、この単純なテスト ファイル "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」のみを書き込みます。
誰か説明してくれませんか?
Javascript を使用して、ブラウザの FORM (windows-1252) と同じ方法ですべてをエンコードするにはどうすればよいですか? (エスケープ関数が機能しない、encodeURIComponent も機能しない)?
それとも、encodeURIComponent が不要な変換を行っていますか?