今JA16SJISTILDE(Shift JIS)で運用しているDBをAL32UTF8(UTF-8)かAL16UTF16(UTF-16)に変更しようという話が出てきているので、何が問題になりそうかメモしてみる。
きっと他にもあるので後で追記する。
格納データ量が増える
1.5倍〜2倍程度には増える。
これはしかたない。
CHAR/VARCHARに格納できる文字数が減る
文字列型の格納方法をバイト単位(バイト・セマンティクス)から文字数単位(キャラクタ・セマンティクス)にすれば、むしろ格納文字数は増える。しかし、アプリのバリデーションがアホだと本来ORAエラーにより水際で防いでいた部分も格納されるようになるため、データ連係時に問題が出そう。
バイト数から描画エリアを判断できなくなる
例えば等幅フォントで全角50文字しか入らないエリアがあるとすると、そこに収めるための処理はアプリが実装することになる。Shift JISの場合だとほぼバイト数でちぎるだけで事足りるため、既存アプリでは考慮してないことが多い。
(というか、これがShift JISの数少ない良い点なんだろう)
Unicodeのバージョンアップが半強制になる
Oracle上では同じ文字コード名でも、製品のバージョンによって対応するUnicodeのバージョンが異なる。AL32UTF8の場合だと以下のようになっている。
つまり、OracleをバージョンアップするとUnicodeもバージョンアップしてしまう。
バックエンドのシステムが付いて来れないことになりそう。
Object Browserが対応していない
FAQに書いてあった。
http://www.sint.co.jp/products/siob/ob/faq/faq.html