GETリクエスト時にパラメータで日本語を渡す時の覚書
エンコード問題はなんども躓いては忘れたころにまた発生するので、覚書としてエントリに残しておく。
通常httpリクエストでフォーム内容を送信するときはPOSTメソッドを使うが、何かの理由でGETメソッドを使わなければいけない時がある。
私の場合は検索フォームから検索した結果を表示するページのページングリンクがそれにあたる。
< 1 2 3 4 5>
↑こんな感じのやつ
この場合は
<a href="/test?searchword=hogehoge">2</a>
みたいに書くことになるが、このhogehogeが日本語の場合はURLエンコードしなければいけない。
"ほげほげ"を検索した場合は
<a href="/test?searchword=%82%d9%82%b0%82%d9%82%b0">2</a>
みたいに。
これをローカルで試してみようとtomcatを起動して8080ポートで試してみると文字化けして表示されない。
TomcatのURLパラメータ文字化け - 人類みんなごくつぶし
にあるように正しくデコードされないのだ。
なので
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" />
をtomcatに設定して回避した。