Hitachi

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


付録A.1 アプリケーションで扱う文字コード

アプリケーションの構成を基に,文字コード変換の流れを示します。

図A‒1 アプリケーションの文字コード変換の流れ

[図データ]

図中の番号((1)〜(5))は,文字コードを考慮する必要のあるプログラムやリソースを表します。また,図中の英字(A〜E)は文字コード変換時のデータの流れを示します。プログラム,リソースで扱う文字コードと注意事項,および文字コード変換の動作と注意事項を,それぞれ表に示します。

表A‒1 プログラム,リソースで扱う文字コードと注意事項

プログラム,リソース名

項目

扱う文字コードおよび注意事項

(1)入力ページ

URLのパス

URLのパスの文字コードは,ISO-8859-1である必要があります。シフトJISなどの非ASCII文字は記述できません。

クエリ文字列

HTMLの<FORM>タグを使用して送信される文字は,フォームを表示しているHTMLページと同じ文字コードでURLエンコードされて送出されます。

POSTデータ

(2)JSP

JSP

任意の文字コードで作成できます。

Webアプリケーションのバージョン2.4以降(JSP 2.0仕様以降)で,JSPドキュメントの文字エンコードを指定する場合は,XML宣言で文字エンコードを指定してください。

JSP 1.2仕様では,JSPの文字コードは,pageディレクティブのpageEncoding属性に記述する必要があります。

(3)HTML

HTML

任意の文字コードで作成できます。

(4)データベース

データベース

データベースに格納するデータの文字コードは,ブラウザに表示する文字コードを考慮して決定してください。

(5)出力ページ

レスポンスヘッダ

ISO-8859-1である必要があります。非ASCII文字を使用する場合は,URLエンコードする必要があります。

レスポンスボディ

ユーザプログラムで任意の文字コードを使用できます。

表A‒2 文字コード変換の動作と注意事項

変換個所

対象

文字コード変換時の動作および注意事項

A ブラウザ〜J2EEサーバ

URLのパス

Webコンテナでは,URLのパスの文字コードはISO-8859-1として処理されます。

クエリ文字列

クエリ文字列またはPOSTデータの文字コードは,アプリケーションで任意に決められます。サーブレット,JSPではUnicodeで扱われるので,アプリケーション内で矛盾のないように文字コードを変換してください。

POSTデータ

B J2EEサーバ内

JSPファイル

pageディレクティブのpageEncoding属性に記述されたエンコーディングでファイルが読み込まれます。pageEncoding属性が省略されている場合は,contentType属性が使用されます。

HTMLファイル

HTMLファイルの文字コードのままブラウザに送信されます。

C J2EEサーバ〜データベース

データベース

JDBCドライバによって,Unicodeがデータベース格納文字コードに変換されます。

D データベース〜J2EEサーバ

データベース

JDBCドライバによって,データベース格納文字コードがUnicodeに変換されます。

E J2EEサーバ〜ブラウザ

レスポンスヘッダ

Webコンテナによって,レスポンスヘッダの文字コードがISO-8859-1に変換されます。

レスポンスボディ

サーブレットの場合

ServletResponseクラスのsetContentTypeメソッドによって文字コードを指定します。

JSPの場合

pageディレクティブのcontentType属性で文字コードを指定します。

参考

「文字化け」について

アプリケーションの実行環境では,文字コードはUnicodeとして扱われます。このため,ブラウザから送信された文字列は一度Unicodeに変換されます。また,データベースへのアクセス時にはUnicodeとデータベース格納文字コード間の文字コード変換,レスポンス時にはUnicodeからレスポンスの文字コードへの変換をする必要があります。これらの文字コード変換時に適切な変換をしないと,文字化けする原因になります。

これはシフトJISと呼ばれる文字コードに機種依存文字が含まれることや,同じ文字でもUnicodeへの変換結果がほかの文字コードと異なっているものがあるために発生します。例えば,ブラウザから機種依存文字を含んだ文字データが送信され,これをUnicodeに変換した場合,レスポンス時にこの文字列をシフトJISに変換すると,文字化けする結果となります。

クライアントのOSをWindowsに限定できる場合は,文字コードをシフトJISではなくMS932またはWindows-31Jと指定することで,文字化けを避けられます。

注※

−,〜,‖,¢,£,¬などの文字が該当します。