Spec-Zone .ru
спецификации, руководства, описания, API

10.1.5. Конфигурирование Набора символов и Сопоставления для Приложений

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

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

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

Примеры, показанные здесь, принимают использование utf8 набор символов и utf8_general_ci сопоставление.

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

CREATE DATABASE mydb  DEFAULT CHARACTER SET utf8  DEFAULT COLLATE utf8_general_ci;

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

Приложения, которые используют базу данных, должны также сконфигурировать свое соединение с сервером каждый раз, когда они соединяются. Это может быть сделано, выполняясь a SET NAMES 'utf8' оператор после соединения. Оператор может использоваться независимо от метода соединения: mysql клиент, Сценарии PHP, и т.д.

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

Для получения дополнительной информации о конфигурировании клиентских соединений, см. Раздел 10.1.4, "Наборы символов соединения и Сопоставления".

Если Вы изменяете набор символов значения по умолчанию или сопоставление для базы данных, сохраненные подпрограммы, которые используют значения по умолчанию базы данных, должны быть отброшены и воссозданы так, чтобы они использовали новые значения по умолчанию. (В сохраненной подпрограмме переменные с символьными типами данных используют значения по умолчанию базы данных, если набор символов или сопоставление не определяются явно. См. Раздел 13.1.12,"CREATE PROCEDURE и CREATE FUNCTION Синтаксис".)

Определите символьные настройки при запуске сервера. Чтобы выбрать набор символов и сопоставление при запуске сервера, используйте --character-set-server и --collation-server опции. Например, чтобы определить опции в файле опции, включайте эти строки:

[mysqld]character-set-server=utf8collation-server=utf8_general_ci

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

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

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

shell> cmake . -DDEFAULT_CHARSET=utf8
        \           -DDEFAULT_COLLATION=utf8_general_ci

Получающееся использование сервера utf8 и utf8_general_ci как значение по умолчанию для баз данных и таблиц и для клиентских соединений. Является ненужным использовать --character-set-server и --collation-server определить те значения по умолчанию при запуске сервера. Является также ненужным для приложений сконфигурировать их использование соединения SET NAMES или эквивалентный после того, как они соединяются с сервером.

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

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