Spec-Zone.ru › MySQL 9.2

12.5 Настройка кодовой страницы и правил сортировки для приложений

Для приложений, хранящих данные с использованием по умолчанию кодовой страницы и правил сортировки MySQL (utf8mb4, utf8mb4_0900_ai_ci), специальная настройка не требуется. Если приложениям необходимо хранить данные с использованием другой кодовой страницы или правил сортировки, вы можете настроить информацию о кодовой странице несколькими способами:

  • Укажите параметры кодовой страницы для каждой базы данных. Например, приложения, использующие одну базу данных, могут использовать значения по умолчанию utf8mb4, в то время как приложения, использующие другую базу данных, могут использовать sjis.

  • Укажите параметры кодовой страницы при запуске сервера. Это заставит сервер использовать заданные параметры для всех приложений, которые не сделают других настроек.

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

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

Для методов на уровне базы данных или на уровне запуска сервера настройки контролируют кодовую страницу для хранения данных. Приложения также должны сообщить серверу, какую кодовую страницу использовать для связи клиент/сервер, как описано в следующих инструкциях.

В приведенных здесь примерах предполагается использование кодовой страницы latin1 и правил сортировки latin1_swedish_ci в определенных контекстах в качестве альтернативы значениям по умолчанию utf8mb4 и utf8mb4_0900_ai_ci.

  • Укажите параметры кодовой страницы для каждой базы данных. Чтобы создать базу данных, таблицы которой будут использовать заданную кодовую страницу и правила сортировки по умолчанию для хранения данных, используйте оператор CREATE DATABASE, например:

    CREATE DATABASE mydb
      CHARACTER SET latin1
      COLLATE latin1_swedish_ci;
    

    Таблицы, созданные в базе данных, по умолчанию используют latin1 и latin1_swedish_ci для столбцов с данными символьного типа.

    Приложения, использующие базу данных, также должны настроить свое соединение с сервером каждый раз при подключении. Это можно сделать, выполнив оператор SET NAMES 'latin1' после подключения. Данный оператор может быть использован независимо от метода подключения (клиент mysql, скрипты PHP и так далее).

    В некоторых случаях можно настроить соединение таким образом, чтобы оно использовало нужную кодовую страницу другим способом. Например, чтобы подключиться с помощью mysql, можно указать параметр командной строки --default-character-set=latin1, чтобы добиться того же эффекта, что и SET NAMES 'latin1'.

    Дополнительную информацию о настройке подключений клиентов см. в разделе 12.4 «Кодовые страницы и правила сортировки подключений».

    Примечание

    Если вы используете ALTER DATABASE для изменения кодовой страницы или правил сортировки по умолчанию базы данных, существующие хранимые процедуры в базе данных, использующие эти значения по умолчанию, необходимо удалить и пересоздать, чтобы они использовали новые значения по умолчанию. (В хранимой процедуре переменные с типами данных символьного типа используют значения по умолчанию базы данных, если кодовая страница или правила сортировки не указаны явно. См. раздел 15.1.18 «Операторы CREATE PROCEDURE и CREATE FUNCTION»).

  • Укажите параметры кодовой страницы при запуске сервера. Для выбора кодовой страницы и правил сортировки при запуске сервера используйте параметры --character-set-server и --collation-server. Например, чтобы указать параметры в файле настроек, добавьте следующие строки:

    [mysqld]
    character-set-server=latin1
    collation-server=latin1_swedish_ci
    

    Эти настройки применяются ко всему серверу и используются в качестве значений по умолчанию для баз данных, созданных любым приложением, и для таблиц, созданных в этих базах данных.

    Приложениям по-прежнему необходимо настроить свое соединение с помощью SET NAMES или эквивалента после подключения, как описано ранее. Вы можете попробовать запустить сервер с параметром --init_connect="SET NAMES 'latin1'", чтобы вызвать выполнение SET NAMES автоматически для каждого подключающегося клиента. Однако это может привести к несогласованным результатам, поскольку значение init_connect не выполняется для пользователей, имеющих привилегию CONNECTION_ADMIN (или устаревшую привилегию SUPER).

  • Укажите параметры кодовой страницы во время конфигурации MySQL. Чтобы выбрать кодовую страницу и правила сортировки при конфигурации и компиляции MySQL из исходного кода, используйте параметры DEFAULT_CHARSET и DEFAULT_COLLATION CMake:

    cmake . -DDEFAULT_CHARSET=latin1 \
      -DDEFAULT_COLLATION=latin1_swedish_ci
    

    Результат — сервер использует latin1 и latin1_swedish_ci в качестве значений по умолчанию для баз данных и таблиц, а также для подключений клиентов. Нет необходимости использовать --character-set-server и --collation-server для указания этих значений по умолчанию при запуске сервера. Также нет необходимости для приложений настраивать свои подключения с помощью SET NAMES или эквивалента после подключения к серверу.

Независимо от того, как вы настраиваете кодовую страницу MySQL для использования приложениями, вы также должны учитывать среду, в которой эти приложения выполняются. Например, если вы намерены отправлять запросы, используя текстовую информацию в кодировке UTF-8 из файла, который вы создаете в редакторе, вы должны редактировать этот файл с локалью среды, установленной на UTF-8, чтобы кодировка файла была правильной, и чтобы операционная система обрабатывала ее правильно. Если вы используете клиент mysql в окне терминала, окно должно быть настроено на использование UTF-8, иначе символы могут отображаться некорректно. Для скрипта, выполняемого в веб-среде, скрипт должен правильно обрабатывать кодировку символов для взаимодействия с сервером MySQL и должен генерировать страницы, которые корректно указывают кодировку, чтобы браузеры знали, как отображать содержимое страниц. Например, вы можете включить эту <meta> метку внутри вашего элемента <head>:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/charset-applications.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API