(1/2)一般的にWebシステムは、データベースやレガシーシステムなどと連携することが多い。Javaアプリケーションの文字コードとしてはUnicodeが使用されるため、システム間での文字エンコーディング変換が必要になり、文字コードに関するトラブルも後を絶たない。今回は、アプリケーション作成時やシステム設定時のエンコーディング変換に関して考慮するべき点を解説する。Vista上でJIS第3水準の漢字を入力したらエラーが発生したまずは、なぜこのような問題が発生するかについて説明する。アプリケーションやシステムで複数のエンコーディングを使用している場合、エンコーディングの変換が必要となる。エンコーディング変換は、アプリケーションやシステムに情報を受け渡すために必要な処理だ。シフトJISを扱うシステムとUnicodeを扱うシステムが連携する場合、文字コードの変換つまりエンコーディング変換しないとデータのやり取りができない。上で紹介したような文字にかかわるトラブルは、エンコーディング変換がうまくいかなかった時に発生するのだ。Webシステム上でJavaを実行する場合も、当然エンコーディングについて考慮する必要がある。Javaでは内部的にUnicodeが使用される。このため、Webブラウザからデータが送信されると、アプリケーションサーバの入り口でUnicodeに変換してからWebシステム内のアプリケーションへ渡される。文字エンコーディングがEUCのデータベースと接続するWebシステムの場合には、データベースアクセス時にUnicodeからEUCに変換される。先に述べた文字化けや字形差などの問題は、これらのエンコーディング変換時に発生する。エンコーディング変換が行われるタイミングと、アプリケーション開発時の留意点などを紹介しよう。Webシステムでのエンコーディング変換個所と設定に関する注意点Webシステムにおいて、エンコーディング変換が発生する個所は、下図のとおりである。図中に示した番号に従い、エンコードの変換が行われる。Webシステムでのエンコーディング変換個所Webブラウザから送信された文字列にシフトJISなどのエンコーディングが使用されている場合で、サーブレットやJSPがWebコンテナ上で実行する時には、シフトJISはUnicodeへと変換されるデータベースとデータをやり取りする時には、データベース格納文字コードとの間でエンコーディング変換される出力結果をWebブラウザに返す時に、Unicodeからレスポンスで使用する文字コードへと、エンコーディング変換されるWebコンテナ(図中「1」および「3」)でのエンコーディング変換では、サーブレットおよびJSPに設定した文字エンコーディングが適用される。次の表に、サーブレットおよびJSPで文字エンコーディングを設定する際に注意する点についてまとめる。データベースとの間(図中「2」)では、データを受け渡す場合、JDBCドライバなどに設定した文字エンコーディングの内容が適用される。これは、データベース以外のレガシーシステムに接続する場合にも同様のことが言える。ベンダーによっては、エンコーディング変換の機能をライブラリとして提供している場合もある。このようなライブラリは、アプリケーションで明示的にエンコーディング変換を行いたいときに使用すると便利だ。エンコーディング変換では、アプリケーションを実行する環境も考慮する必要がある。称して情報を盗む「ご注意!!OFFICEのプロダクトキーが不正コピーされています。Japanスマートジャパン3Dモデラボキャリア@IT自分戦略研究所エンジニアライフディルバートアプリITmediaねとらぼねこらぼついトピ!ITmediaはアイティメディア株式会社の登録商標です。