WebOTX Application Server V8.2 で、http://{ホスト名}:{ポート番号}/context?value=%93%FA%96%7B%8C%EA のように、URL のパラメータで渡した文字を getParameter メソッドで取得した際に文字化けが発生します。
渡す文字は Shift_JIS でエンコードしています。
文字化けが発生しないようにするには、どうすればいいでしょうか?
WebOTX Application Server V8.x では、デフォルトの状態では、URL のデコードには、UTF-8 が使用されます。
URL のデコードに使用する文字エンコーディングを指定する場合、以下の運用管理コマンド(otxadmin)でエンコーディング名を設定してください。
アドバンスドモードの場合
otxadmin> add-pg-javasystem-property --user {ユーザ名} --password {パスワード} --apgroup {アプリケーショングループ名} --javasystemprop com.nec.webotx.enterprise.web.connector.URIEncoding --value {エンコーディング名} {プロセスグループ名}
スタンダードモード(シングルプロセスモード)の場合
otxadmin> set --user {ユーザ名} --password {パスワード} server.http-service.http-listener.{リスナ名}.property.URIEncoding={エンコーディング名}
※ スタンダードモード(シングルプロセスモード)で、WebOTX Webサーバ等の外部 Webサーバを使用している場合のリスナ名の既定値は、ajp-listener-1 です。Java ベースの内蔵 Webサーバを使用している場合のリスナ名の既定値は、http-listener-1 です。
また、Content-Type や javax.servlet.Request.setCharacterEncoding メソッドなどで、リクエストのBODY部の文字エンコーディングを指定している場合、その文字エンコーディングを URL のデコードにも使用することができます。
BODY 部で指定している文字エンコーディングを、URLのデコードにも使用する場合、以下のコマンドでuseBodyEncodingForURI を true に設定してください。
アドバンスドモードモードの場合
otxadmin> add-pg-javasystem-property --user {ユーザ名} --password {パスワード} --apgroup {アプリケーショングループ名} --javasystemprop com.nec.webotx.enterprise.web.connector.useBodyEncodingForURI --value true {プロセスグループ名}
スタンダードモードモード(シングルプロセスモード)の場合
otxadmin> set --user {ユーザ名} --password {パスワード} server.http-service.http-listener.{リスナ名}.property.useBodyEncodingForURI=true
※ useBodyEncodingForURI=true と URIEncoding が同時に指定された場合、useBodyEncodingForURI=trueの設定が優先され、URL のデコードには、BODY部で指定された文字エンコーディングが使用されます。
※ V7 以前の場合ではプロパティ名 URIEncoding と useBodyEncodingForURI の代わりに以下のプロパティ名を使用してください。
URIEncoding → uri-encoding
useBodyEncodingForURI → use-body-encoding-for-uri
【対象製品】Application Server
【確認済みのバージョン】 V8.1 V8.2 V8.3 V8.4
【確認済みのエディション】 すべて
【確認済みの対象OS】すべて
【確認済みのJavaバージョン】すべて
【コンポーネント】Webコンテナ
【カテゴリー】トラブルシューティング