ブラウザから送信されるデータにどの文字エンコーディングが使用されているかを Webcoordinatorに明示的に指定できます。何も指定しなかった場合、 JavaのエンコーディングJISAutoDetectを使用して文字エンコーディングが自動判定されます。 JISAutoDetectについては、“Java 2 SDK, Standard Edition ドキュメント”の「国際化」を参照してください。
送信データのエンコーディングの指定には以下の3通りの方法があります。
フォームにuji.encodingリクエストパラメタを追加して、文字エンコーディングを 指定できます。詳細は、“UJIタグリファレンス”のuji.encodingリクエストパラメタを参照してください。
ApplicationProfileクラスのgetRequestEncodingメソッドをオーバーライドすることにより、全フォームの文字エンコーディングを 一括して指定できます。詳細は“APIリファレンス”を参照してください。
Webアプリケーション環境定義ファイル(web.xml)に記述する初期化パラメタuji.defaultEncodingで全フォームの文字エンコーディングを一括して指定できます。Webアプリケーション環境定義ファイルについては、“Webアプリケーション環境定義ファイル(web.xml)”を参照してください。
複数の方法で文字エンコーディングを指定した場合、以下の優先順位で有効になります。
uji.encodingリクエストパラメタでの指定
ApplicationProfileクラスのgetRequestEncodingメソッドでの指定
Webアプリケーション環境定義ファイルに記述したuji.defaultEncodingパラメタの指定
サーブレットコンテナで文字エンコーディングの変換を行う場合は、getRequestEncodingメソッドまたは初期化パラメタuji.defaultEncodingで文字エンコーディングとしてnoneを指定してください。この指定により、Webcoordinatorでは文字エンコーディングの変換をしなくなります。
注意
Interstageを使用しており、以下のすべての条件に該当する場合は文字エンコーディングの変換が正しく行われません。
Interstage管理コンソールのワークユニットの環境設定で、Servletコンテナ設定の「リクエストURIのエンコーディング」をデフォルト以外の設定にしている場合。
uji.encodingリクエストパラメタ、getRequestEncodingメソッド、初期化パラメタuji.defaultEncodingでnone以外の文字エンコーディングを指定している場合、または、いずれも指定を省略している場合。
GETメソッドで送信するフォームがある場合。(FORMタグまたはuji:formタグでmethod="get"を指定したもの、または、methodアトリビュートを省略したものがある場合。)
この場合は、Interstage管理コンソールのワークユニットの環境設定で、Servletコンテナ設定の「リクエストボディ処理のエンコーディングをクエリパラメタに使用する」を「する」に設定してください。この設定が「しない」の場合、GETメソッドで送信されたデータについてはサーブレットコンテナとWebcoordinatorの両方で文字エンコーディングの変換が行われて正しくない変換結果となります。