先日、学校から、servletの課題が出たのでやっていたところ
jspのテキストボックスに入力した内容をservletに
GETメソッドでとばすと何故か文字化けしてしまう・・・。
という問題にぶちあたりました(笑)
ちゃーんと、
request.setCharacterEncoding("UTF-8");
と指定をしているにも関わらず文字化けする・・・。
何故だ・・・。と1時間も頭を抱えました。(笑)
ネットで色々と検索をかけて、ようやく見つけました。
どうやら、Tomcat5.xから、FORMのGETメソッドでパラメータを
送信した場合は、setCharacterEncodingメソッドを無視するらしい・・・。
ただし、POSTメソッドの場合は有効。
もちろん設定をすれば、
GETリクエストでも文字化けせずに
できるようですが、色々と難しそうで。
自分はPOSTメソッドでも良かったので
そちらに逃げました(笑)
一応、下にGETメソッドの設定方法を書いておきます。
GETメソッドの場合。servlet.xml.ファイルの<connector>タグの
useBodyEncodingForURI属性をtrueに指定することで、
setCharacterEncodingメソッドを有効にする。
そして、
Connecter要素でuseBodyEncodingForURI=trueとすると
サブミットを行うページのエンコーディングでURLを
デコードするようになり、文字化けを回避することが可能。
さらに、Conntecter要素のURIEncoding属性で文字コードを
指定すると、GET時のURIのエンコードを指定できる。
とのこと。
ちょっと何をおっしゃってるのか自分には分かりませんが
気が向いたら解読していこうと思います。(笑)
