колонтитул в word 2007, 0000002111
MySQL и использование национальных алфавитов
По умолчанию в MySQL используется набор символов ISO-8859-1 (Latin1) с
сортировкой согласно шведским/финским правилам. Этот набор символов также
подходит для использования в США и Западной Европе.
Все стандартные исполняемые файлы MySQL компилируются с настройкой
--with-extra-charsets=complex
. Таким образом в файл помещается код,
позволяющий всем стандартным программам работать с набором символов latin1
,
а также многобайтовыми наборами символов. Другие наборы символов могут
загружаться из соответствующих файлов определений по необходимости.
Набор определяет, какие символы могут использоваться в именах, а также способ
сортировки значений в операторах ORDER BY
и GROUP BY
команды SELECT
.
При запуске сервера можно изменить набор символов при помощи параметра
--default-character-set
. Выбрать доступные наборы символов можно при
помощи параметров --with-charset=charset
и --with-extra-charsets=
список-кодировок | complex | all
, и файлов наборов символов,
перечисленных в SHAREDIR/charsets/Index
.
При смене набора символов во время работы MySQL (что может одновременно
изменить и порядок сортировки) необходимо запустить команду myisamchk -r
-q --set-character-set=charset
для всех таблиц. В противном случае
индексы могут быть созданы в неправильном порядке.
При подключении клиента к серверу MySQL сервер отправляет ему используемый по
умолчанию набор символов. На время соединения клиент переключается на
использование этого набора.
Для экранирования строк в SQL-запросе необходимо пользоваться функцией
mysql_real_escape_string()
. mysql_real_escape_string()
идентична старой функции mysql_escape_string()
- во всем, кроме
одного: в качестве первого параметра она принимает дескриптор соединения MYSQL.
Если клиент был скомпилирован с набором путей, в которых не было пути
установки сервера, а настраивавший MySQL пользователь на включил в исполняемый
файл системы все наборы символов, клиенту необходимо сообщить о местонахождении
дополнительных наборов символов, которые нужны ему для общения с сервером.
Сделать это можно путем внесения в файл настроек MySQL следующей строки:
[client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
путь в ней указывает на каталог, в котором хранятся динамические наборы
символов MySQL.
Заставить клиента использовать определенный набор символов можно следующим
образом:
[client]
default-character-set=character-set-name
но обычно этого не требуется.
Сообщения об ошибках на языках, отличных от английского
mysqld
может выдавать сообщения об ошибках на следующих языках:
чешском, датском, голландском, английском (по умолчанию), эстонском,
французском, немецком, греческом, венгерском, итальянском, японском, корейском,
норвежском, новонорвежском, польском, португальском, румынском, русском,
словацком, испанском и шведском.
При запуске mysqld
выбрать определенный язык можно при помощи
настройки --language=язык
или -L язык
. Например:
shell> mysqld --language=swedish
или:
shell> mysqld --language=/usr/local/share/swedish
Обратите внимание: названия языков вводятся в нижнем регистре.
Файлы языков по умолчанию располагаются в папке
mysql_base_dir
/share/LANGUAGE
/
.
Для того чтобы изменить тексты сообщений об ошибках, нужно отредактировать
файл errmsg.txt
и запустить следующую команду для
генерации нового файла errmsg.sys
:
shell> comp_err errmsg.txt errmsg.sys
Установив новую версию MySQL, не забудьте внести те же изменения в новый файл
errmsg.txt
.
Добавление набора символов
Снабдить MySQL новым набором символов можно следующим образом.
Определите, является ли новый набор символов простым или сложным. Если для
работы с этим набором никаких специальных процедур обработки строк и поддержки
многобайтовых символов не требуется, он является простым. Если вышеперечисленные
возможности необходимы, этот набор символов относится к сложным.
Например, наборы latin1
и danish
- простые, а
big5
и czech
- сложные.
Для всех приведенных ниже примеров предполагается, что используемый набор
символов называется MYSET
.
Для создания простого набора достаточно сделать следующее:
-
Вставьте имя MYSET
в конец файла
sql/share/charsets/Index
и присвойте этому набору символов
уникальный номер.
-
Создайте файл sql/share/charsets/MYSET.conf
.
(в качестве основы можно использовать файл
sql/share/charsets/latin1.conf
). Правила составления этого файла
очень просты:
-
Комментарием считается целая строка, начинающаяся с символа
#
.
-
Слова разделяются любым количеством непечатаемых символов.
-
При определении набора символов каждое слово должно
представлять собой число в шестнадцатеричной системе счисления.
-
Массив ctype занимает первых 257 слов. За ним следуют массивы
to_lower
, to_upper[]
и
sort_order[]
, каждый из которых занимает 256 слов.
-
Добавьте имя набора символов в списки CHARSETS_AVAILABLE
и COMPILED_CHARSETS
файла
configure.in
.
-
Перенастройте, перекомпилируйте и протестируйте систему.
Для создания сложного набора необходимо выполнить следующие действия:
-
Создайте файл strings/ctype-MYSET.c в исходном дистрибутиве MySQL.
-
Вставьте имя MYSET в конец файла sql/share/charsets/Index и присвойте
этому набору символов уникальный номер.
-
Просмотрите один из существующих файлов ctype-*.c (например
strings/ctype-big5.c) и узнайте, что нужно определить. Не забывайте, что
имена массивов в вашем файле должны быть похожи на следующие:
ctype_MYSET, to_lower_MYSET и т.п. Эти имена соответствуют именам
массивов из простого набора символов.
-
В начале файла целесообразно поместить комментарий наподобие
следующего:
/*
этот комментарий разбирается configure для создания ctype.c,
поэтому не меняйте его, если не уверены в правильности своих действий.
*
.configure. number_MYSET=MYNUMBER
.configure. strxfrm_multiply_MYSET=N
.configure. mbmaxlen_MYSET=N
*/
Программа configure использует этот комментарий для линкования набора
символов с библиотекой MySQL. Значение строк strxfrm_multiply и mbmaxlen
будет разъяснено ниже. Использовать их нужно только в том случае, если
вам нужны функции для сортировки строк или работы с многобайтовыми
наборами символов соответственно.
-
После этого нужно создать некоторые из следующих функций:
-
my_strncoll_MYSET()
-
my_strcoll_MYSET()
-
my_strxfrm_MYSET()
-
my_like_range_MYSET()
-
Добавьте имя набора символов в списки CHARSETS_AVAILABLE
и COMPILED_CHARSETS
файла
configure.in
.
-
Перенастройте, перекомпилируйте и протестируйте систему.
Более подробные инструкции приведены в файле sql/share/charsets/README
.
Если вы хотите, чтобы ваш набор символов был включен в комплект поставки
MySQL, вышлите патч с ним по адресу <internals@lists.mysql.com>
.
колонтитулы в word 2007, 000000211111