Spec-Zone .ru
спецификации, руководства, описания, API

10.3.1. Символьные Массивы Определения

Каждому простому набору символов определяли местоположение конфигурационного файла в sql/share/charsets каталог. Для названного набора символов MYSYS, файл называют MYSET.xml. Это использует <map> элементы массива, чтобы перечислить свойства набора символов. <map> элементы появляются в пределах этих элементов:

Для сложного набора символов как реализовано в a ctype-MYSET.c файл в strings каталог, есть соответствующие массивы: ctype_MYSET[], to_lower_MYSET[], и т.д. Не у каждого сложного набора символов есть все массивы. См. также существующее ctype-*.c файлы для примеров. См. CHARSET_INFO.txt файл в strings каталог для дополнительной информации.

Большинство массивов индексируется символьным значением и имеет 256 элементов. <ctype> массив индексируется символьным значением + 1 и имеет 257 элементов. Это - соглашение наследства для того, чтобы обработать EOF.

<ctype> элементы массива являются битовыми значениями. Каждый элемент описывает атрибуты единственного символа в наборе символов. Каждый атрибут связывается с битовой маской, как определено в include/m_ctype.h:

#define _MY_U   01      /* Upper case */#define _MY_L   02      /* Lower case */#define _MY_NMR 04      /* Numeral (digit) */#define _MY_SPC 010     /* Spacing character */#define _MY_PNT 020     /* Punctuation */#define _MY_CTR 040     /* Control character */#define _MY_B   0100    /* Blank */#define _MY_X   0200    /* heXadecimal digit */

<ctype> значение для данного символа должно быть объединением применимых значений битовой маски, которые описывают символ. Например, 'A' символ верхнего регистра (_MY_U) так же как шестнадцатеричная цифра (_MY_X), таким образом, ctype значение должно быть определено как это:

ctype['A'+1] = _MY_U | _MY_X = 01 | 0200 = 0201

Битовая маска оценивает в m_ctype.h восьмеричные значения, но элементы <ctype> массив в MYSET.xml должен быть записан как шестнадцатеричные значения.

<lower> и <upper> массивы содержат символы нижнего регистра и символы верхнего регистра, соответствующие каждому элементу набора символов. Например:

lower['A'] should contain 'a'upper['a'] should contain 'A'

Каждый <collation> массив указывает, как символы должны быть упорядочены в целях сортировки и сравнении. Символы видов MySQL, основанные на значениях этой информации. В некоторых случаях это - то же самое как <upper> массив, что означает, что сортировка является нечувствительной к регистру. Для более сложных правил сортировки (для сложных наборов символов), см. обсуждение строкового сопоставления в Разделе 10.3.2, "Строковая Поддержка Сопоставления Сложных Наборов символов".