ページ)今回は、前回(文字化けに関するトラブルに強くなる【基礎編】)に引き続きOracleの「文字化け」について説明します。0213の問題について説明します。補助文字(追加文字)とサロゲートペア(関連キーワード:文字化け、SJIS16TILDE、チルダ文字、サロゲートペア、補助文字(追加文字)WindowsやJavaなどのように、OSやプログラミング言語の内部処理では、文字データをUnicodeで扱うことが一般的になってきています。Unicodeの目的の1つは、同一のプログラムで複数言語に対応することですから、これは想定された望ましい流れです。過去の経緯から、Unicode以前に存在したシフトJIS、日本語EUCといったUnicode以外の文字コードで文字データを格納したり、各種の処理を実行する必要は依然として残っています。このため、UnicodeとシフトJIS、日本語EUCなどとの相互変換が必要となりますが、それぞれのソフトウェアにおける変換処理の違いによって文字化けが発生する可能性があります。Oracleを用いたシステムにおいて、変換処理の違いによって生じる最も代表的な文字化け事例がJavaベースのWebアプリケーションにおける「〜」の文字化けです。本章ではこの事例を題材に、UnicodeとUnicode以前の文字コードの相互変換にまつわる問題について説明します。JavaベースのWebアプリケーションにおける「〜」の文字化け本稿では、図1に示すシステム構成のとおり、JavaのベースのWebアプリケーションを想定し、このシステムにおける「〜」の文字化けについて説明します。図1に示したシステムの文字データの扱いにおけるポイントは以下のとおりです。Driverで接続するOracleのデータベースキャラクタセットはJA16SJISとするこのような構成のシステムにおいて、「〜」文字をWebブラウザからデータベースに格納して参照すると、表示された文字が「?」になる文字化けが発生します。0208に含まれている文字で、いわゆる機種依存文字でもありません。「〜」はシフトJISでは0x8160となります。0208に含まれている文字は文字化けの可能性が低いといわれていますが、なぜこのような文字化けが発生するのでしょうか。ここで発生した文字化けを理解するためには、前回説明したOracleの文字コード変換のみならず、Javaにおける文字コード変換を含めて理解する必要があります。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。