Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Администрирование баз данных /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Локализация MySQL и использование национальных алфавитов - Программирование от RIN.RU
Локализация MySQL и использование национальных алфавитов



Массивы определения символов


Простые массивы to_lower[] и to_upper[] содержат символы верхнего и нижнего регистров, соответствующие каждому из символов набора. Например:


to_lower["A"] should contain "a"
to_upper["a"] should contain "A"


sort_order[] - карта, устанавливающая правила упорядочивания символов для сравнения и сортировки. Во многих наборах символов эта таблица совпадает с to_upper[] (благодаря чему при сортировке регистр символов не учитывается). MySQL сортирует символы в соответствии со значением sort_order[символ]. Более сложные правила упорядочивания строк разъясняются ниже. Cм. раздел Поддержка упорядочивания строк.


ctype[] представляет собой массив битов, по одному элементу на каждый из символов. (Массивы to_lower[], to_upper[], и sort_order[] индексируются по значению символа, а ctype[] - по значению символа + 1. Это позволяет обрабатывать символы EOF).


В файле 'm_ctype.h" приведены следующие определения битовых масок:


#define _U 01 /* верхний регистр */
#define _L 02 /* нижний регистр */
#define _N 04 /* число (цифра) */
#define _S 010 /* символ пробела */
#define _P 020 /* знак пунктуации */
#define _C 040 /* управляющий символ */
#define _B 0100 /* пустой символ */
#define _X 0200 /* шестнадцатеричная цифра */


Значение ctype[] для каждого из символов должно представлять собой объединение значений битовых масок, описывающих символ. Например, "A" представят собой символ верхнего регистра (_U) а также шестнадцатеричную цифру (_X), поэтому элемент ["A"+1] должен содержать значение:


_U + _X = 01 + 0200 = 0201




Поддержка упорядочивания строк


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


В настоящее время лучшим справочным пособием по этому вопросу являются уже реализованные наборы символов. Примером такой реализации могут служить наборы big5, czech, gbk, sjis и tis160.


В начале файла в особом комментарии необходимо указать значение strxfrm_multiply_MYSET=N. Значение N представляет собой максимальный прирост объема строк во время my_strxfrm_MYSET (т.е. положительное целое число).


Поддержка многобайтовых символов


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


В настоящее время лучшим справочным пособием по этому вопросу являются уже реализованные наборы символов. Примером такой реализации могут служить наборы euc_kr, gb2312, gbk, sjis и ujis. Они реализованы в файлах "ctype-"charset".c", расположенных в папке 'strings".


В начале файла в особом комментарии необходимо указать значение strxfrm_multiply_MYSET=N. Значение N должно содержать объем самого "большого" символа набора в байтах.


Проблемы с наборами символов


При попытке воспользоваться набором символов, не включенным в исполняемый файл, можно столкнуться со следующими неприятностями:


  • В программе задан неверный путь к каталогу, в котором хранятся наборы символов (по умолчанию это "/usr/local/mysql/share/mysql/charsets"). Данную проблему можно решить с помощью настройки --character-sets-dir.

  • Набор символов является многобайтовым и не может быть загружен динамически. В таком случае нужно перекомпилировать программу и включить в нее поддержку нужного набора.

  • Набор символов может быть загружен динамически, но конфигурационного файла для него нет. В таком случае нужно скопировать файл для этого набора из нового дистрибутива MySQL.

  • В файле "Index" нет имени набора символов.


    ERROR 1105: File "/usr/local/share/mysql/charsets/?.conf" not found (Errcode: 2)


    В таком случае нужно либо установить новый файл 'Index" или вручную внести в него недостающие имена наборов.


Узнать имя набора символов таблиц MyISAM можно с помощью команды myisamchk -dvv table_name.

<<<  Назад
 1  2  3 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Конфигурирование MySQL

Общие проблемы безопасности и система привилегий доступа MySQL

Управление учетными записями пользователей MySQL

Предотвращение катастроф и восстановление

Справочник по языку администрирования баз данных

Серверные сценарии и утилиты MySQL

Клиентские сценарии и утилиты MySQL

Файлы журналов MySQL

Репликация в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь