12.15 Настройка кодировки символов
Сервер MySQL имеет встроенную по умолчанию кодировку символов и правила сортировки. Чтобы изменить эти значения по умолчанию, используйте опции --character-set-server и --collation-server при запуске сервера. См. Раздел 7.1.7, «Параметры командной строки сервера». Правила сортировки должны соответствовать правилам сортировки для используемой кодировки символов по умолчанию. Чтобы определить доступные правила сортировки для каждой кодировки символов, используйте оператор SHOW COLLATION или запросите данные из таблицы INFORMATION_SCHEMA COLLATIONS.
Если вы попытаетесь использовать кодировку символов, которая не скомпилирована в ваш двоичный файл, могут возникнуть следующие проблемы:
-
Если ваша программа использует неверный путь для определения места хранения кодировок символов (обычно это каталог
share/mysql/charsetsилиshare/charsetsв каталоге установки MySQL), эту проблему можно решить, используя опцию--character-sets-dirпри запуске программы. Например, чтобы указать каталог, который будет использоваться клиентами MySQL, перечислите его в группе[client]файла параметров. Приведенные здесь примеры показывают, как это может выглядеть для Unix и Windows соответственно:[client] character-sets-dir=/usr/local/mysql/share/mysql/charsets [client] character-sets-dir="C:/Program Files/MySQL/MySQL Server 9.2/share/charsets"
-
Если кодировка символов — это сложная кодировка, которую нельзя загрузить динамически, необходимо перекомпилировать программу с поддержкой этой кодировки.
Для кодировок Unicode вы можете определить правила сортировки без перекомпиляции, используя обозначения LDML. См. Раздел 12.14.4, «Добавление правил сортировки UCA в кодировку символов Unicode».
Если кодировка символов — это динамическая кодировка, но у вас нет файла конфигурации для неё, необходимо установить файл конфигурации для этой кодировки из новой дистрибуции MySQL.
-
Если в вашем файле индекса кодировки символов (
Index.xml) нет имени кодировки, ваша программа отобразит сообщение об ошибке:Character set '
charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' fileДля решения этой проблемы необходимо либо получить новый файл индекса, либо вручную добавить имена отсутствующих кодировок символов в текущий файл.
Вы можете принудительно заставить клиентские программы использовать определённую кодировку символов следующим образом:
[client]
default-character-set=charset_name
Обычно это не требуется. Однако, когда character_set_system отличается от character_set_server или character_set_client, и вы вводите символы вручную (как идентификаторы объектов базы данных, значения столбцов или оба), они могут отображаться некорректно в выводе клиента или сам вывод может быть отформатирован некорректно. В таких случаях запуск mysql клиента с параметром --default-character-set= (то есть установка кодировки символов клиента, соответствующей кодировке системы) должно решить проблему.system_character_set
© 2025 Oracle
Licensed under the GPLv2 License.