WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
По умолчанию MySQL использует набор символов ISO-8859-1 (Latin1) с
сортировкой согласно шведскому и финскому языкам. Это набор символов,
подходящий в США и Западной Европе. Все стандартные программы MySQL компилируются с поддержкой
Набор символов определяет то, какие символы позволяются в именах, и в
каком порядке сортируются инструкции Вы можете менять набор символов опцией
Если Вы изменяете набор символов при работе MySQL (это может изменять
порядок сортировки), Вы должны выполнить myisamchk -r -q на всех таблицах.
Иначе Ваши индексы нельзя упорядочивать правильно. Когда пользователь соединяется с сервером MySQL, тот посылает заданный по
умолчанию набор символов пользователю. Нужно использовать Если клиент компилируется с другими путями, чем те, где сервер установлен,
и администратор, который конфигурировал MySQL, не включал все наборы символов
в двоичный файл MySQL, нужно определить для клиента, где он сможет находить
дополнительные наборы символов, а это будет требоваться, если сервер
выполняется с другим набором символов. Можно определять это, включая в файл опции MySQL: Где path указывает на то, где сохранены динамические наборы символов
MySQL. Можно вынуждать клиента использовать специфический набор символов: Но обычно этого не требуется. Чтобы запустить или: Обратите внимание, что все имена языка определены в нижнем регистре. Файлы языка размещены (по умолчанию) в каталоге
`mysql_base_dir/share/ЯЗЫК'. Чтобы модифицировать файл сообщений об ошибках, Вы должны редактировать
файл errmsg.txt и выполнить следующую команду, чтобы генерировать
новую версию файла errmsg.sys: Если Вы обновляете версию MySQL, не забудьте повторить Ваши изменения с
новым файлом `errmsg.txt'. Чтобы добавить другой набор символов к MySQL, используйте следующую
процедуру. Решите, является ли набор простым или сложным. Если набор символов не
должен использовать специальную строку, сопоставляющую подпрограммы для
сортировки, и не нуждается в поддержке многобайтных символов, он простой.
Если требуется любое из этих свойств, набор считается сложным. Например, В следующем разделе я предположил, что Вы называете Ваш набор символов
Для простого набора символов делают следующее: Для сложного набора символов делают следующее: Файл sql/share/charsets/README включает дополнительные команды.
Если Вы хотите иметь набор символов, включенный в дистрибутив MySQL,
отправьте по почте заплатку на
internals@lists.mysql.com. Массив Вы можете находить следующие определения bitmask в m_ctype.h: Запись в Если правила сортировки для Вашего языка слишком сложны, чтобы быть
обработанными таблицей Сейчас самая лучшая документация по этому вопросу, это наборы символов,
которые уже выполнены. Рассмотрите наборы символов big5, czech, gbk, sjis и
tis160 для примеров. Вы должны определить значение Если нужно добавить поддержку для нового набора символов, который включает
многобайтные символы, Вы должны использовать функции многобайтных символов.
Сейчас самая лучшая документация по этому вопросу, это наборы символов,
которые уже выполнены. Рассмотрите наборы символов euc_kr, gb2312, gbk, sjis
и ujis для примеров. Они выполнены в файлах Вы должны определить значение
4.6 Локализация и интернационализация MySQL
4.6.1 Набор символов, используемый
для данных и сортировки
--with-extra-charsets=complex
. Это добавляет код ко всем
стандартным программам, чтобы они были способны обработать
latin1
и все многобайтные наборы символов. Другие наборы
символов будут загружены из файла определения набора символов тогда, когда
это будет необходимо.ORDER BY
и
GROUP BY
в операторе выполнения запроса SELECT
.--default-character-set
при запуске сервера. Наборы символов
доступны в зависимости от опций --with-charset=charset
и
--with-extra-charset=list-of-charset|complex|all
в файле
configure
и файлах конфигурации набора символов, перечисленных в
SHAREDIR/charsets/Index. Подробности в разделе
"2.3.3 Типичные опции configure
".mysql_real_escape_string()
при выходе из
строк для запроса SQL. mysql_real_escape_string()
идентичен
старой функции mysql_escape_string()
, за исключением того, что
требуется дескриптор подключения MYSQL как первый параметр.
[client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
[client]
default-character-set=character-set-name
4.6.2 Сообщения об ошибках не на английском
mysqld
может выдавать сообщения об ошибках на следующих
языках: Czech, Danish, Dutch, English (по умолчанию), Estonian, French,
German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Norwegian-ny,
Polish, Portuguese, Romanian, Russian, Slovak, Spanish и Swedish.mysqld
для специфического языка, используйте
параметр --language=lang
или -L lang
. Например:
shell> mysqld --language=swedish
shell> mysqld --language=/usr/local/share/swedish
shell> comp_err errmsg.txt errmsg.sys
4.6.3 Добавление нового набора символов
latin1
и danish
простые, а вот
big5
или czech
сложные наборы символов.MYSET
.
Подробности в разделе "4.6.4
Массивы определения символов".
ctype
принимает первые 257 слов. После этого массивы
to_lower
, to_upper
и sort_order
берут
по 256 слов каждый.CHARSETS_AVAILABLE
и спискам
COMPILED_CHARSETS
в configure.in
.
ctype_MYSET
,
to_lower_MYSET
и так далее. Это соответствует массивам в
простом наборе символов.
/*
* This comment is parsed by configure to create ctype.c,
* so don't change it unless you know what you are doing.
*
* .configure. number_MYSET=MYNUMBER
* .configure. strxfrm_multiply_MYSET=N
* .configure. mbmaxlen_MYSET=N
*/
Программа выбора конфигурации configure
использует этот
комментарий, чтобы автоматически включить набор символов в библиотеку MySQL.
Параметры-строки strxfrm_multiply и mbmaxlen будут подробно объясняться в
следующих разделах. Включите их только, если нужны строка, сопоставляющая
функции сортировки, или функция многобайтного набора символов соответственно.
Подробности в разделе "4.6.5
Поддержка сортировки строк".
my_strncoll_MYSET()
my_strcoll_MYSET()
my_strxfrm_MYSET()
my_like_range_MYSET()
CHARSETS_AVAILABLE
и спискам
COMPILED_CHARSETS
в файле configure.in
.
4.6.4 Массивы определения символов
to_lower[]
и to_upper[]
представляют собой
простые массивы, которые хранят символы нижнего и верхнего регистров,
соответствующие каждому члену набора символов. Например:
to_lower['A'] should contain 'a'
to_upper['a'] should contain 'A'
sort_order[]
представляет собой карту, указывающую,
как символы нужно упорядочивать для целей сортировки и сравнения. Для многих
наборов символов это то же самое, что и to_upper[]
(что
означает: сортировать, не учитывая регистр). MySQL сортирует символы,
основанные на значении sort_order[character]
. Для более сложных
правил сортировки изучите обсуждение сопоставления строк ниже. Подробности в
разделе "4.6.5 Сопоставление строк
".ctype[]
представляет собой массив разрядных значений, с одним
элементом для одного символа. Обратите внимание, что массивы
to_lower[]
, to_upper[]
и sort_order[]
индексированы символьным значением, но ctype[]
индексирован
символьным значением+1. Это старое наследство, чтобы обработать EOF.
#define _U 01 /* Uppercase */
#define _L 02 /* Lowercase */
#define _N 04 /* Numeral (digit) */
#define _S 010 /* Spacing character */
#define _P 020 /* Punctuation */
#define _C 040 /* Control character */
#define _B 0100 /* Blank */
#define _X 0200 /* heXadecimal digit */
ctype[]
для каждого символа должна быть объединением
применимых значений bitmask, которые описывают символ. Например,
'A'
представляет собой символ верхнего регистра
(_U
) также как шестнадцатеричная цифра (_X
), так
что ctype['A'+1]
должен содержать значение:
_U + _X = 01 + 0200 = 0201
4.6.5 Сопоставление строк
sort_order[]
, Вы должны использовать
строку, сопоставляющую функции.strxfrm_multiply_MYSET=N
в
специальном комментарии наверху файла. N
должен быть установлен
к максимальному коэффициенту роста строки в ходе выполнения
my_strxfrm_MYSET
(это должно быть положительное целое число).
4.6.6 Поддержка многобайтных символов
ctype-'charset'.c
в
каталоге strings.mbmaxlen_MYSET=N
в специальном
комментарии наверху исходного файла. N
должен быть установлен в
размер в байтах самого большого символа в наборе.
Найди своих коллег! |