русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Создание наборов символов


Дата добавления: 2015-07-09; просмотров: 542; Нарушение авторских прав


Допускается включать в программу MySQL новые наборы символов. Для простого, однобайтового набора требуется лишь один файл с четырьмя таблицами преобразований. В случае сложного набора необходимо также написать функцию, выполняющую сортировку строк.

# конфигурационный файл для набора символов latinl.# массив ctype{} (должен содержать 257 элементов). 00 20 20 20 20 20 20 20 20 20 28 28 28 28 28 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2048 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10... ... ... ...02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 0202 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 # Массив to lower (должен содержать 256 элементов). 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F... ... ... ...E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EFF0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF # Массив to upper (должен содержать 256 элементов). 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F... ... ... ...E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EFD0 D1 D2 D3 D4 D5 D6 F7 D8 D9 DA DB DC DD DE FF # Массив sort order (должен содержать 256 элементов). 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F... ... ... ...41 41 41 41 5C 5B 5C 43 45 45 45 45 49 49 49 4944 4E 4F 4F 4F 4F 5D F7 D8 55 55 55 59 59 DE FF Десятичное значение Шестнадцатеричное значение Описание 1 0х01 прописная буква2 0х02 строчная буква4 0х04 цифра8 0х08 символ пробела16 0х10 знак пунктуации32 0х20 управляющий символ64 0х40 пусто128 0х80 шестнадцатеричная цифра

Листинг 13.2. (html, txt)

Вторая группа значений представляет собой таблицу ASCII, предназначенную для перевода символов в нижний регистр. Например, символ в позиции 0x41 — это прописная буква "A", но ей соответствует значение 0x61, т.е. строчная "a". Третья группа значений определяет таблицу ASCII для перевода символов в верхний регистр. Последняя таблица задает порядок сортировки и обычно совпадает с третьей таблицей.



Если истинный порядок сортировки невозможно отразить в столь простой таблице, то необходимо написать специальные функции сортировки. Для этого нужно создать файл в каталоге strings дерева MySQL. Здесь же находятся файлы всех остальных наборов символов, например, ctype_big5.c. Программа MySQL ищет в этом файле пять функций и четыре массива. Имена всех функций и массивов включают стандартный префикс и название набора. В листинге 13.3 показаны прототипы функций и определения массивов для набора символов big5.

uchar NEAR ctype big5{257}uchar NEAR to lower big5{}uchar NEAR to upper{257}uchar NEAR sort order big5{257} my bool my like range big5( const char *ptr, uint ptr length, pchar escape, uint ers length, char *min str, char *max str, uint *min length, uint *max length) int my strcoll big5( const uchar * s1, const uchar * s2) int my strnncoll big5( const uchar * s1, int len1, const uchar * s2 int len2) int my strnxfrm big5( uchar * dest, uchar * src, int len, int srclen) int my strxfrm big5( uchar * dest, uchar * src, int len)

Листинг 13.3. (html, txt)

Четыре функции осуществляют сравнение строк. Функция с префиксом my like range находит наименьшую и наибольшую строки (с учетом реестра), соответствующие выражению в операторе LIKE. Само выражение передается в аргументе ptr. Аргумент ptr length определяет длину выражения. Содержимое наименьшей и наибольшей строк заносится в аргументы min str и max str соответственно.

Функции с префиксами my strcoll и my strncoll служат аналогами обычных функций strcoll() и strncoll() языка С, которые, в свою очередь, являются версиями функций strcmp и strncmp, учитывающими региональные установки. Функции с префиксами my strxfrn и my strnxfrn эмулируют стандартные функции strxfrn() и strnxfrn(). Получить о них более подробную информацию можно в man файлах UNIX.

В начало файла нужно добавить комментарий, подобный тому, что показан в листинге 13.4. На основании строк, приведенных в комментарии, сценарий configure включает набор символов в клиентскую библиотеку. Переменная strxfrn multiply набор задается в том случае, когда у набора символов есть свои функции сортировки строк. Она определяет максимальный коэффициент удлинения строки при ее прохождении через функцию с префиксом my strxfrm. Как следует из листинга, строки в кодировке big5 не растягиваются.

Если в набор входят многобайтовые символы, потребуется определить переменную mbmaxlen набор. Она задает максимально возможное число байтов в представлении символа. Например, в набор big5 входят двухбайтовые символы.

/* Эти строки анализируются сценарием configure при создании файла ctype.c, поэтому не меняйте их без веских оснований. .configure. strxfrm multiply big5=1 .configure. mbmaxlen big5=2/*

Листинг 13.4. (html, txt)

Все, что осталось теперь сделать, — это добавить имя набора в списки CHARSETS AVAILABLE и COMPILED CHARSETS в файле configure.ini и перекомпилировать программу. Активизировать доступные наборы символов можно с помощью опций командной строки, конфигурационного файла или SQL инструкций.



<== предыдущая лекция | следующая лекция ==>
Библиотека функций отладки | Создание функций


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.71 сек.