12.13 Добавление набора символов
В этом разделе описывается процедура добавления набора символов в MySQL. Правильная процедура зависит от того, является ли набор символов простым или сложным:
Если набор символов не требует специальных правил сортировки строк для сортировки и не требует поддержки многобайтовых символов, он является простым.
Если набор символов требует любой из этих функций, он является сложным.
Например, greek и swe7 являются простыми наборами символов, в то время как big5 и czech — сложными.
Для использования следующих инструкций у вас должен быть дистрибутив MySQL. В инструкциях MYSET представляет имя набора символов, который вы хотите добавить.
-
Добавьте элемент
<charset>дляMYSETв файлsql/share/charsets/Index.xml. Используйте существующее содержимое файла в качестве руководства по добавлению нового содержимого. Ниже следует частичный список для элементаlatin1<charset>:<charset name="latin1"> <family>Western</family> <description>cp1252 West European</description> ... <collation name="latin1_swedish_ci" id="8" order="Finnish, Swedish"> <flag>primary</flag> <flag>compiled</flag> </collation> <collation name="latin1_danish_ci" id="15" order="Danish"/> ... <collation name="latin1_bin" id="47" order="Binary"> <flag>binary</flag> <flag>compiled</flag> </collation> ... </charset>Элемент
<charset>должен содержать список всех правил сортировки для набора символов. Они должны включать по крайней мере бинарное правило сортировки и по умолчанию (основное) правило сортировки. Правило сортировки по умолчанию часто называется с суффиксомgeneral_ci(общее, регистронезависимое). Возможно, что бинарное правило сортировки является правилом сортировки по умолчанию, но обычно они разные. Правило сортировки по умолчанию должно иметь флагprimary. Бинарное правило сортировки должно иметь флагbinary.Вы должны назначить уникальный идентификационный номер каждому правилу сортировки. Диапазон идентификаторов от 1024 до 2047 зарезервирован для правил сортировки, определенных пользователем. Чтобы найти максимальный из используемых в настоящее время идентификаторов правил сортировки, используйте этот запрос:
SELECT MAX(ID) FROM INFORMATION_SCHEMA.COLLATIONS;
-
Этот шаг зависит от того, добавляете ли вы простой или сложный набор символов. Простой набор символов требует только файла конфигурации, в то время как сложный набор символов требует файла исходного кода C, который определяет функции сортировки, многобайтовые функции или и то, и другое.
Для простого набора символов создайте файл конфигурации
, который описывает свойства набора символов. Создайте этот файл в каталогеMYSET.xmlsql/share/charsets. Вы можете использовать копиюlatin1.xmlв качестве основы для этого файла. Синтаксис файла очень прост:Комментарии записываются как обычные XML-комментарии (
<!--).text-->Слова внутри элементов массива
<map>отделяются произвольным количеством пробелов.Каждое слово внутри элементов массива
<map>должно быть числом в шестнадцатеричном формате.Элемент массива
<map>для элемента<ctype>имеет 257 слов. Другие элементы массива<map>после этого имеют 256 слов. См. раздел 12.13.1, «Массивы определений символов».Для каждого правила сортировки, указанного в элементе
<charset>для набора символов вIndex.xml,должен содержать элементMYSET.xml<collation>, который определяет порядок символов.
Для сложного набора символов создайте файл исходного кода C, который описывает свойства набора символов и определяет вспомогательные процедуры, необходимые для правильного выполнения операций с набором символов:
Создайте файл
ctype-в каталогеMYSET.cstrings. Посмотрите на один из существующих файловctype-*.c(например,ctype-big5.c), чтобы увидеть, что необходимо определить. Массивы в вашем файле должны иметь имена, такие какctype_,MYSETto_lower_и так далее. Они соответствуют массивам для простого набора символов. См. раздел 12.13.1, «Массивы определений символов».MYSETДля каждого элемента
<collation>, указанного в элементе<charset>для набора символов вIndex.xml, файлctype-должен предоставить реализацию правила сортировки.MYSET.cЕсли набор символов требует функций сортировки строк, см. раздел 12.13.2, «Поддержка сортировки строк для сложных наборов символов».
Если набор символов требует поддержки многобайтовых символов, см. раздел 12.13.3, «Поддержка многобайтовых символов для сложных наборов символов».
-
Измените информацию о конфигурации. Используйте существующую информацию о конфигурации в качестве руководства по добавлению информации для
MYSYS. Пример здесь предполагает, что набор символов имеет правила сортировки по умолчанию и бинарные правила сортировки, но дляMYSETтребуются дополнительные строки, если у него есть дополнительные правила сортировки.-
Отредактируйте
mysys/charset-def.cи «“зарегистрируйте”» правила сортировки для нового набора символов.Добавьте эти строки в раздел “объявление”:
#ifdef HAVE_CHARSET_
MYSETextern CHARSET_INFO my_charset_MYSET_general_ci; extern CHARSET_INFO my_charset_MYSET_bin; #endifДобавьте эти строки в раздел “регистрация”:
#ifdef HAVE_CHARSET_
MYSETadd_compiled_collation(&my_charset_MYSET_general_ci); add_compiled_collation(&my_charset_MYSET_bin); #endif Если набор символов использует
ctype-, отредактируйтеMYSET.cstrings/CMakeLists.txtи добавьтеctype-в определение переменнойMYSET.cSTRINGS_SOURCES.-
Отредактируйте
cmake/character_sets.cmake:Добавьте
MYSETк значению сCHARSETS_AVAILABLEв алфавитном порядке.Добавьте
MYSETк значениюCHARSETS_COMPLEXв алфавитном порядке. Это необходимо даже для простых наборов символов, чтобы CMake мог распознать-DDEFAULT_CHARSET=.MYSET
-
Переконфигурировать, перекомпилировать и протестировать.
© 2025 Oracle
Licensed under the GPLv2 License.