OracleのJIS2004対応について考えると、大きく分けて2種類の対応方法がある。DB全体でJIS2004に対応する方法と、DBの一部でJIS2004に対応する方法である。それぞれの方法を図示すると、下のようになる。
パターンAが、DB全体でJIS2004に対応する方法である。DBのキャラクタセットを「AL32UTF8」にすることでDB全体でJIS2004を扱えるようになる。
パターンBが、DBの一部でJIS2004に対応する方法である。DBのキャラクタセットは「JA16SJISTILDE」で、各国語・キャラクタセットを「AL16UTF16」にする。データ型が、NCHAR、NVARCHAR2およびNCLOBのカラムのみJIS2004を扱えるようになる。
これだけ見ると、パターンAを選択するのがベストに見える。しかし、パターンAには、いくつかの注意点があり、それを許容できない場合はパターンBを採用することになる。
パターンAの注意点
パターンAには以下の注意点があり、それを考慮した設計が必要になる。例えば既存アプリのJIS2004対応を実施する場合には、つらい場合がある。テーブル名や列名に日本語を使用している場合や、HDD容量に余裕がない場合である。
- 文字のバイト数の違いによる、文字数からバイト数を計算するのが面倒。
- シフトJISは、全角2バイト、半角1バイト
- UTF8は、全角3バイト、半角1バイト、半角カナ2バイト
- データ型やプログラム製造時に注意が必要。扱っているのがバイト数か文字数なのかを意識する必要がある
- DB容量の増加
- JA16JISTILDEに比べ、1.5~3倍ぐらいの容量を見積もる必要がある
- テーブル名や列名に日本語を使用する場合、10文字以下しか使用できない
参照情報
関連情報
パターンBの場合について、調査をした結果が次の2つのエントリーである。