Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


付録A.2 ブラウザとアプリケーション間の文字コード変換

ブラウザとアプリケーション間で文字コード変換をするときに使用するメソッド,およびJSPとJavaScriptの実装時の注意事項について説明します。

〈この項の構成〉

(1) ブラウザとアプリケーション間の文字コード変換で使用するメソッド

ブラウザを使用して送信されたクエリ文字列,POSTデータは,HttpServletRequestクラスのメソッドを使用して取得します。HttpServletRequestクラスのうち,文字コード変換に関係のあるメソッドと使用時の注意事項を示します。

(a) setCharacterEncodingメソッド

リクエストのメッセージボディで使われている文字コードを設定します。このメソッドは,getParameterメソッドや,getReaderメソッドを使って入力ストリームから読み込む前に実行されなければなりません。

(a) setCharacterEncodingメソッド

リクエストのメッセージボディ,およびGETリクエストのクエリで送信されたパラメタに使われている文字コードを設定します。このメソッドは,getParameterメソッドや,getReaderメソッドを使って入力ストリームから読み込む前に実行されなければなりません。

setCharacterEncodingメソッドで設定した文字コードが使用される範囲を次の表に示します。

表A‒3 setCharacterEncodingメソッドで設定した文字コードが使用される範囲

メソッド

HTMLのフォームから送信されたデータ(クエリも含む)

左記以外のメッセージボディ

getParameter

getParameterNames

getParameterValues

getParameterMap

getInputStream

×

×

getReader

×

getQueryString

×

(凡例)

○:取得した値はsetCharacterEncodingメソッドで設定した文字コードとしてUnicodeに変換される。

△:文字データはsetCharacterEncodingメソッドで設定した文字コードに変換される。

×:エンコードされたままの文字列が取得される。

−:取得できない。

(b) getParameterメソッド

パラメタの名称を指定して,リクエストに含まれるパラメタの値を取得します。取得した値はURLデコードされ,Unicodeに変換されます。パラメタの名称やパラメタの値を取得する前に,setCharacterEncodingメソッドを用いて文字コードを指定する必要があります。指定しなかった場合,ISO-8859-1としてUnicodeに変換されます。HttpServletRequestクラスのgetParameterNamesメソッド,getParameterValuesメソッド,getParameterMapメソッドも同様です。

(c) getInputStreamメソッド

リクエストのメッセージボディに含まれているバイナリデータを読み込むためのストリームを取得します。HTMLのフォームから送信されたデータからはエンコードされたままの文字列が取得されるので,取得した文字列を適切な文字コードでデコードする必要があります

(d) getReaderメソッド

リクエストのメッセージボディにBufferedReaderクラスを使い,文字データとして取り出します。文字データはメッセージボディと同じ文字コードに変換されます。HTMLのフォームから送信されたデータからはエンコードされたままの文字列が取得されるので,取得した文字列を適切な文字コードでデコードする必要があります。

(e) getQueryStringメソッド

リクエストされたURLのパスの後ろに含まれているクエリ文字列を返します。HTMLのフォームから送信されたデータからはエンコードされたままの文字列が取得されるので,取得した文字列を適切な文字コードでデコードする必要があります。

(2) JSPのファイルインクルード時の注意事項

JSPファイルのincludeディレクティブでファイルをインクルードする場合には,インクルード元となるJSPファイルでcontentType属性を使用してエンコードを指定してください。また,JSPファイルの文字コードはpageEncoding属性に指定してください。指定しない場合はインクルード先の文字が正常に表示されない場合があります。

(3) JavaScriptを使用してクエリ文字列を作成する場合の注意事項