GET、POSTメソッドで日本語文字化け解消法

HTMLのフォーム入力をServletで受け取る方法としてGET, POSTメソッドがあります。

GETメソッド

URLを介してServletにリクエストパラメータとして値を渡します。
例)
ttp://〜〜〜〜.jp/testServlet?name=deepfolteの時には
request.getParameter("name")でdeepfolteを取り出すことができます。
利点としては

  • フォーム入力をせずにURLに直接入れても値を受け取ってくれる
  • リンクタグでも受け取ってくれる。
  • お気に入りに入れておいても大丈夫。

POSTメソッド

URLを介さず直接Servletに値を渡します。
GETと同じくrequest.getParameter("name")で取り出し可能です。
利点

  • プログラム間で受け渡したい情報をユーザに隠して送れる。

日本語文字化け問題

POSTメソッドではパラメータを取り出す前に
request.setCharacterEncoding("Windows-31J")
とすれば可能です。

ただGETメソッドでPOSTと同じ方法でやると文字化けする可能性があります。
その問題点と解決法

※Tomcat5.xより、FORMのGETメソッドでパラメータを送信した場合、 setCharacterEncodingメソッドを無視するようになりました。POSTメソッドの場合は有効です。
GETメソッドの場合、server.xmlファイルのタグの useBodyEncodingForURI属性をtrueに指定することで、setCharacterEncodingメソッドを有効にできます。

Javaの道:Servlet(2.クライアントからのデータ取得)