他のキャラクタセットを MySQL に追加するには、以下の手順を実行します。
キャラクタセットがシンプルなものかコンプレックスなものかを判断します。キャラクタセットが、ソートのために特殊文字照合ルーチンを必要とせず、マルチバイト文字のサポートも必要なければ、それはシンプルです。どちらかを必要とする場合、それはコンプレックスです。
たとえば、latin1
と
danish
はシンプルなキャラクタセットで、big5
や czech
はコンプレックスなキャラクタセットです。
以下のセクションでは、キャラクタセットを
MYSET
という名前にすることが前提です。
シンプルなキャラクタセットの場合、以下を実行します。
MYSET を sql/share/charsets/Index
ファイルの最後に追加し、これに一意の番号を割り当てる。
sql/share/charsets/MYSET.conf
ファイルを作成する(sql/share/charsets/latin1.conf
をベースとして使用できる)。
ファイルの構文は、以下のとおり非常にシンプルである。
コメントは '#' 文字で始まり、行の最後まで続く。
単語は任意の数のスペースで区切る。
キャラクタセットを定義するとき、すべての単語は 16 進数値であることが必要。
ctype
配列は、最初の 257
語を占める。to_lower[]
、to_upper[]
、および
sort_order[]
配列はそれぞれその後の 256 語を占める。
See 項4.7.4. 「キャラクタ定義配列」。
キャラクタセット名を、configure.in
の CHARSETS_AVAILABLE
リストおよび
COMPILED_CHARSETS
リストに追加する。
再コンフィギャして再コンパイルし、テストする。
コンプレックスなキャラクタセットの場合、以下を実行します。
MySQL ソースディストリビューションに
strings/ctype-MYSET.c
ファイルを作成する。
MYSET を sql/share/charsets/Index
ファイルの最後に追加する。これに一意の番号を割り当てる。
strings/ctype-big5.c
など、既存の
ctype-*.c
ファイルの 1
つを見て、何の定義が必要か調べる。注意:
ファイル内の配列名は、ctype_MYSET
、to_lower_MYSET
などであることが必要。これは、シンプルなキャラクタセットの配列に対応する。
See 項4.7.4. 「キャラクタ定義配列」。
ファイルの先頭付近に、以下のようなコメントを置く。
/* * This comment is parsed by configure to create ctype.c, * so don't change it unless you know what you are doing. * * .configure. number_MYSET=MYNUMBER * .configure. strxfrm_multiply_MYSET=N * .configure. mbmaxlen_MYSET=N */
configure
プログラムはこのコメントを使用して、自動的にキャラクタセットを
MySQL ライブラリに組み込む。
strxfrm_multiply 行および mbmaxlen 行については、後続セクションで説明する。これらはそれぞれ、文字列照合関数またはマルチバイト文字セット関数が必要な場合に組み込む。
次に、以下の関数を作成する。
my_strncoll_MYSET()
my_strcoll_MYSET()
my_strxfrm_MYSET()
my_like_range_MYSET()
See 項4.7.5. 「文字列照合サポート」。
キャラクタセット名を、configure.in
の CHARSETS_AVAILABLE
リストおよび
COMPILED_CHARSETS
リストに追加する。
再コンフィギャして再コンパイルし、テストする。
sql/share/charsets/README
ファイルに、より詳細な説明が含まれています。
MySQL ディストリビューションへのキャラクタセットの組み込みを希望する場合には、MySQL internals メーリングリストにパッチをメールしてください。 See 項1.7.1.1. 「MySQL メーリングリスト」。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.