Spec-Zone .ru
спецификации, руководства, описания, API
|
Для приложений, которые хранят данные, используя набор символов MySQL значения по умолчанию и сопоставление
(latin1
, latin1_swedish_ci
), никакая специальная
конфигурация не должна быть необходима. Если приложения требуют хранения данных, используя различный набор
символов или сопоставление, можно сконфигурировать информацию о наборе символов несколько путей:
Определите символьные настройки для каждой базы данных. Например, приложения,
которые используют одну базу данных, могли бы потребовать utf8
, тогда как
приложения, которые используют другую базу данных, могли бы потребовать sjis
.
Определите символьные настройки при запуске сервера. Это заставляет сервер использовать данные настройки для всех приложений, которые не делают другие приготовления.
Определите символьные настройки во время конфигурации, если Вы создаете MySQL из источника. Это заставляет сервер использовать данные настройки для всех приложений, не имея необходимость определять их при запуске сервера.
Когда различные приложения требуют различных символьных настроек, метод для каждой базы данных обеспечивает большую гибкость. Если больше всего или все приложения используют тот же самый набор символов, определяя символьные настройки при запуске сервера, или время конфигурации может быть самым удобным.
Для методов для каждой базы данных или методов запуска сервера, настройки управляют набором символов для хранения данных. Приложения должны также сказать сервер который набор символов использовать для клиент-серверной связи, как описано в следующих инструкциях.
Примеры, показанные здесь, принимают использование 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.15,"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" />