Webアプリケーションで取得したパラメータで文字化けが発生する場合の対処

WebアプリケーションのGETメソッド中で取得したパラメータで文字化けが発生する場合、 次のいずれかの対策が必要です。

  1. WebOTXでエンコードの指定を行う。
    WebOTXにエンコード指定の設定を行うことで、コードを変換します。パラメータを一律同じ 文字コードに変換する場合に利用できます。WebOTX V6.31より利用可能です。
    エンコードの指定は、otxadminコマンドを用いて次のように設定することができます。

    otxadmin> set --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <管理ポート>
              server.http-service.http-listener.<リスナID>.property.URIEncoding=<文字エンコード>

    文字エンコードには、”Windows-31J”などが指定できます。

  2. SetCharacterEncoding()で文字エンコードを指定する。
    Webアプリケーションで、SetCharacterEncoding()で文字エンコードを指定して、パラメータの コードを変換します。WebOTX V6.31より利用可能です。
    SetCharacterEncoding()で文字エンコードを指定するには、otxadminコマンドを用いて次のように 設定する必要があります。

    otxadmin> set --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <管理ポート>
              server.http-service.http-listener.<リスナID>.property.useBodyEncodingForURI=true
  3. フィルターを利用する。
    Webアプリケーションのフィルターで、パラメータをエンコードする方式です。フィルターの 処理によって、パラメータのエンコードを行います。
    フィルターのサンプルとしては、Tomcatに付属しているSetCharacterEncodingFilter.javaが ありますので、これが利用できます。

  4. Webアプリケーションでエンコードする。
    取得したパラメータ文字列を、Webアプリケーションの処理で、文字コードを指定して、エンコードします。
    例として、strParamに設定したパラメータを、"Windows-31J"に変換するには次のように処理します。

    String strEncoded = new String(strParam.getBytes("8859_1"), "Windows-31J");

関連情報