10.15 Настройка кодировки символов
Сервер MySQL имеет встроенную по умолчанию кодировку символов и сортировку. Чтобы изменить эти значения по умолчанию, используйте опции --character-set-server и --collation-server при запуске сервера. См. Раздел 5.1.6, «Параметры командной строки сервера». Сортировка должна быть допустимой сортировкой для кодировки символов по умолчанию. Чтобы определить доступные сортировки для каждой кодировки символов, используйте оператор 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 5.7/share/charsets"
-
Если кодировка символов является сложной кодировкой, которую нельзя загрузить динамически, необходимо перекомпилировать программу с поддержкой этой кодировки.
Для кодировок Юникод вы можете определять сортировки без перекомпиляции, используя обозначение LDML. См. Раздел 10.14.4, «Добавление сортировки UCA к кодировке символов Юникод».
Если кодировка символов является динамической, но у вас нет файла конфигурации для нее, установите файл конфигурации кодировки символов из новой дистрибуции 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.