top
Loading...
5.10.3.添加新的字符集
5.10.3. 添加新的字符集

本節討論在MySQL中添加新字符集的程序。你必須有一個MySQL源碼分發版。

要選擇正確的程序,先確定字符集是簡單字符集還是復雜字符集:

·         如果字符集不需要使用特殊字符串校對規則程序進行排序,并且不需要多字節字符支持,則為簡單字符集。

·         如果需要上述某個特性,則為復雜字符集。

例如,latin1danish為簡單字符集,而big5czech為復雜字符集。

在下面的程序中,字符集名用MYSET表示。

對于簡單字符集,應:

1.    sql/share/charsets/Index文件最后添加MYSET。并指定唯一的編號。

2.    創建文件sql/share/charsets/MYSET.conf(你可以使用sql/share/charsets/latin1.conf的備份文件作為該文件的基礎)

文件的語法很簡單:

·         注釋從‘#’字符開始,一直到該行末尾。

·         各字之間用任意數量的空格間隔開。

·         定義字符集時,每個字必須為十六進制格式的數字。

·         ctype數組占據前257個字。to_lower[]to_upper[]sort_order[]數組依次占據256個字。

參見5.10.4節,“字符定義數組”。

3.    將字符集名添加到configurE.inCHARSETS_AVAILABLECOMPILED_CHARSETS列。

4.    重新配置、編譯并測試。

對于復雜字符集,應:

1.    MySQL源碼分發版中創建文件strings/ctype-MYSET.c

2.    sql/share/charsets/Index文件最后添加MYSET。并指定唯一的編號。

3.    看看已有的ctype-*.c文件(例如strings/ctype-big5.c),看看需要定義什么。請注意文件中的數組名必須為ctype_MYSETto_lower_MYSET等等。對應簡單字符集的數組。參見5.10.4節,“字符定義數組”。

4.    在文件頂部,添加注釋:

5.            /*
6.            * This comment is parsed by configure to create ctype.c,
7.            * so don't change it unless you know what you are doing.
8.            *
9.            * .configure. number_MYSET=MYNUMBER
10.        * .configure. strxfrm_multiply_MYSET=N
11.        * .configure. mbmaxlen_MYSET=N
12.        */

configure程序使用該注釋自動將字符集包括進MySQL庫中。

在下面章節中解釋strxfrm_multiplymbmaxlen 行。只有需要字符串比較函數或多字節字符集函數時,才需要單獨將它們包括進來。

13.然后你應創建下面的函數:

    • my_strncoll_MYSET()
    • my_strcoll_MYSET()
    • my_strxfrm_MYSET()
    • my_like_range_MYSET()

參見5.10.5節,“字符串比較支持”

14.將字符集名添加到configurE.inCHARSETS_AVAILABLECOMPILED_CHARSETS列。

15.重新配置、編譯并測試。

sql/share/charsets/README文件中包括詳細的說明。

如果你想要MySQL分發中的字符集,請向MySQL內部郵件系統發郵件。參見1.7.1.1節,“The MySQL郵件列表”。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html
北斗有巢氏 有巢氏北斗