2017-01-30 4 views
0

UTF-8でエンコードされたDB2データベースの「CHAR(1)」は何を意味しますか?DB2 UTF-8エンコーディング:UMLautからCHAR(1)へ?

CHAR(1)の列に特殊文字(UTF-8で2オクテットなど)を挿入できますか?

UTF-8のCHAR(1)は、1バイト/オクテットの容量があることを意味します。つまり、Umlautを挿入すると失敗します。

それが依存...

答えて

4

を私はこの興味深いdeveloperWorks記事を読んで、それは私の単純な質問のために深いになるだろう。 :)

DB2は、バイト数ではなく文字数に基づいた文字列型の列の設計を支援するために、code unitsを導入しました。 CREATE TABLEステートメントにはデータ型の概要があり、CHARVARCHARについても説明しています。文字数を使用する場合、DB2は最長の場合(長さ計算の場合は1文字あたり4バイト/オクテット)を想定しています。

データベース構成string_unitsは、デフォルトで文字数(CODEUNITS32)またはバイト数(SYSTEM)が考慮されるかどうかを決定します。

質問に戻る:何も指定しなかった場合、CHAR(1)に2オクテットを必要とする特殊文字を挿入すると失敗する可能性があります。 CODEUNITS32が指定された場合、それは成功します。

+0

ありがとうございます!それは疑問に答えるようです。これが導入されたら情報を追加してもらえますか?ドキュメンテーションコード単位では、v10.5.0 ... – Bastl

+0

と表示されます。正しいです。ドキュメントのドロップダウンを使用して、他のバージョンに切り替えることができます。 'string_units'は10.5以上でしか利用できません。 –

+0

ちょうど好奇心の外:これは以前どのようにしていたのですか? 8ビットが常に十分であるように、CREATE TABLEでコードページを修正しましたか? – Bastl

関連する問題