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

[目次][用語][索引][前へ][次へ]

付録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エンコードする必要があります。
レスポンスボディ ユーザプログラムで任意の文字コードを使用できます。

注意
Webコンテナでは英数字を2バイトで表現する文字コードは使用できません。英数字に2バイト使用する文字コードを次に示します。
  • UCS-2(ISO/IEC 10646)
  • UCS-4(ISO/IEC 10646-1)
  • UTF-16

    表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と指定することで,文字化けを避けられます。

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