2009年12月26日土曜日

Shift-JISで構築されたデータベースに中国語を入力する

ORACLEで、SJIS(JA16SJIS/JA16SJISTILDE)で構築されたデータベースで、中国語の住所や名前を登録したいケースって、ありませんか?

通常のコンサルや、まともなSIerのアドバイスでは、NVARCHAR2 のカラムを用意する、などの選択肢が提供されることでしょうが、結構、使い勝手が悪いのと、既存のソース修正など、面倒です。

ところで、Webシステムでは、必殺技が使えます。
それは、Unicodeのエスケープ記号(&#xZZZZ;)に変換することで、どんな文字でも既存の SJISカラムに登録することが出来、かつ、なにも加工することなく、ブラウザに表示すると、元の文字が表示されます。

openGion の DBType_NVAR では、入力データを、Unicodeのエスケープ記号に変換して登録します。
1文字が、8Byteコードと考えれば、判りやすいと思います。

この考え方の利点は、下記の通りです。
1.既存のDBは、そのままに、あくまで登録データだけを変換して登録する。
2.文字列連結は、そのまま、|| で合成できる。
3.検索のWHERE条件は、部分文字列でも可能(LIKE検索も簡単)

openGion では、8Byteコードを圧縮せずに登録しています。
データベース容量は増えますが、表示するときに、何も変換せずにそのまま出せるのは便利です。

基幹系DBが、Shift-JISで構築されているが、部分的に中国語などの多国語対応が必要なときには、使えると思います。

ちなみに、openGion では、UTF-8 でのデータベースを推奨しています(まあ、当然か)

0 件のコメント:

コメントを投稿