文字化けに関するトラブルに強くなる【実践編】
――UnicodeとJIS X 0213・サロゲートペアJavaベースのWebアプリケーションにおける「〜」の文字化け/JavaベースのWebアプリケーションのシステム構成と変換表/ 「〜」文字化けのメカニズム/JA16SJISTILDE・JA16EUCTILDEによる対処/Vistaが新たに対応したJIS X 0213とは?/Oracle DatabaseでJIS X 0213に対応するには/JIS X 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 JavaベースWebアプリケーションの典型的なシステム構成

図1に示したシステムの文字データの扱いにおけるポイントは以下のとおりです。
- クライアントのWebブラウザとWeb/APサーバ間のHTTPデータの文字コードは、WindowsのシフトJISとする
- OracleとはOracle JDBC Thin Driverで接続する
- OracleのデータベースキャラクタセットはJA16SJISとする
このような構成のシステムにおいて、「〜」文字をWebブラウザからデータベースに格納して参照すると、表示された文字が「?」になる文字化けが発生します。
●図2 「〜」文字の文字化け
ここで文字化けする「〜」はJIS X 0208に含まれている文字で、いわゆる機種依存文字でもありません。
なお、「〜」はシフトJISでは0x8160となります。一般には機種依存文字ではないJIS X 0208に含まれている文字は文字化けの可能性が低いといわれていますが、なぜこのような文字化けが発生するのでしょうか。
ここで発生した文字化けを理解するためには、前回説明したOracleの文字コード変換のみならず、Javaにおける文字コード変換を含めて理解する必要があります。
| 1/4 |
| Index | |
| 文字化けに関するトラブルに強くなる【実践編】 ――UnicodeとJIS X 0213・サロゲートペア |
|
| Page 1 ・「〜」の文字化け JavaベースのWebアプリケーションにおける「〜」の文字化け |
|
| Page 2 JavaベースのWebアプリケーションのシステム構成と変換表 「〜」文字化けのメカニズム |
|
| Page 3 対処法 JA16SJISTILDE/JA16EUCTILDEによる対処 ・複雑な文字化け:サロゲートペア Vistaが新たに対応したJIS X 0213とは? Oracle DatabaseでJIS X 0213に対応するには 新規のデータベースではAL32UTF8も検討したい ・JIS X 0213とクライアント環境 |
|
| Page 4 ・補助文字(追加文字)とサロゲートペア |
|
| Oracleトラブル対策の基礎知識 |
TechTargetジャパン
- やはりSELECT文は永遠のテーマです (2012/2/7)
Database Expertフォーラムの2012年1月のアクセスランキングをお届けします。定番の記事を一気に追い抜いてあの記事が…… - SELECT文で取り出したデータを加工して表示する (2012/1/25)
SELECT文で取り出したデータを対象に四則演算する方法など、データを見やすくする方法を解説します - 2012年は私たちが勉強会を盛り上げる! (2012/1/23)
2011年12月、データベース業界初の女子会が発足しました。そこで、女子会を盛り上げていってくれそうな2人にお話を伺いました - 複数の条件を指定してSELECT文を実行する (2012/1/13)
複数の条件を指定してSELECT文を実行する方法と、条件指定に必要な論理演算子、比較演算子の役割を解説します
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
