Spec-Zone .ru
спецификации, руководства, описания, API
|
ucs2
Набор символов (UCS 2 Кодирования Unicode)utf16
Набор символов (Кодирование Unicode UTF-16)utf16le
Набор символов (Кодирование Unicode UTF-16LE)utf32
Набор символов (Кодирование Unicode UTF-32)utf8
Набор символов (3-байтовое Кодирование Unicode UTF-8)utf8mb3
"Набор символов" (Псевдоним для utf8
)utf8mb4
Набор символов (4-байтовый UTF-8 UnicodeEncoding)Начальная реализация поддержки Unicode (в MySQL 4.1) включала два набора символов для того, чтобы хранить данные Unicode:
ucs2
, UCS 2 кодирования набора символов Unicode,
используя 16 битов за символ.
utf8
, кодирование UTF-8 набора символов Unicode,
используя один - три байта за символ.
Эти два набора символов поддерживают символы от Основной Многоязычной Плоскости (BMP) Версии 3.0 Unicode. У символов BMP есть эти характеристики:
Их кодовые обозначения между 0 и 65535 (или U+0000
..
U+FFFF
).
Они могут быть закодированы с фиксированным 16-разрядным словом, как в ucs2
.
Они могут быть закодированы с 8, 16, или 24 бита, как в utf8
.
Они достаточны для почти всех символов на главных языках.
Символы, не поддерживаемые вышеупомянутыми наборами символов, включают дополнительные символы, которые лежат вне
BMP. Символы вне BMP сравниваются как ЗАМЕНЯЮЩИЙ СИМВОЛ и преобразовывают в '?'
когда преобразовано в набор символов Unicode.
В MySQL 5.7 поддержка Unicode включает дополнительные символы, который требует новых наборов символов, которые имеют более широкий диапазон и поэтому занимают больше места. Следующая таблица показывает краткое сравнение функции предыдущей и текущей поддержки Unicode.
Перед MySQL 5.5 | MySQL 5.5 и |
---|---|
Весь Unicode 3.0 символа | Весь Unicode 5.0 и 6.0 символов |
Никакие дополнительные символы | С дополнительными символами |
ucs2 набор символов, BMP только |
Никакое изменение |
utf8 набор символов для трех байтов, BMP только |
Никакое изменение |
Новый utf8mb4 набор символов для четырех байтов, дополнительный BMPor
|
|
Новый utf16 набор символов, BMP или дополнительный |
|
Новый utf16le набор символов, BMP или дополнительный |
|
Новый utf32 набор символов, BMP или дополнительный |
Эти изменения совместимы снизу вверх. Если Вы хотите использовать новые наборы символов, есть потенциальные
проблемы несовместимости для Ваших приложений; см. Раздел
10.1.11, "Обновляя от До Текущей Поддержки Unicode". Тот раздел также описывает, как
преобразовать таблицы из utf8
к (4 байта) utf8mb4
набор символов, и что ограничения могут применить при этом.
MySQL 5.7 поддерживает эти наборы символов Unicode:
ucs2
, UCS 2 кодирования набора символов Unicode,
используя 16 битов за символ.
utf16
, UTF-16, кодирующий для набора символов Unicode;
как ucs2
но с расширением для дополнительных символов.
utf16le
, UTF-16LE, кодирующий для набора символов
Unicode; как utf16
но а не обратный порядок байтов с прямым порядком
байтов.
utf32
, UTF-32, кодирующий для набора символов Unicode,
используя 32 бита за символ.
utf8
, кодирование UTF-8 набора символов Unicode,
используя один - три байта за символ.
utf8mb4
, кодирование UTF-8 набора символов Unicode,
используя один - четыре байта за символ.
ucs2
и utf8
поддерживайте символы BMP. utf8mb4
, utf16
, utf16le
, и
utf32
поддерживайте BMP и дополнительные символы.
Подобный набор сопоставлений доступен для большинства наборов символов Unicode. Например, у каждого есть датское
сопоставление, имена которого ucs2_danish_ci
, utf16_danish_ci
, utf32_danish_ci
, utf8_danish_ci
, и utf8mb4_danish_ci
. Исключение
utf16le
, у которого есть только два сопоставления. Все сопоставления Unicode
перечисляются в Разделе 10.1.14.1, "Наборы символов Unicode",
который также описывает свойства сопоставления для дополнительных символов.
Отметьте, что, хотя многие из дополнительных символов, прибывших с восточноазиатских языков, что добавляет MySQL 5.7, поддержка большего количества японских и китайских символов в наборах символов Unicode, не, поддерживают для новых японских и китайских наборов символов.
Реализация MySQL UCS 2, UTF-16, и UTF-32 хранит символы в обратном порядке байтов и не использует метку порядка байтов (BOM) в начале значений. Другие системы баз данных могли бы использовать прямой порядок байтов или BOM. В таких случаях преобразование значений должно будет быть выполнено, передавая данные между теми системами и MySQL. Реализация UTF-16LE является прямым порядком байтов.
MySQL не использует BOM для значений UTF-8.
Клиентские приложения, которые должны связаться с сервером, используя Unicode, должны установить клиентский
набор символов соответственно; например, выходя a SET NAMES 'utf8'
оператор. ucs2
, utf16
, utf16le
, и
utf32
не может использоваться в качестве клиентского набора символов, что означает,
что они не работают на SET NAMES
или SET CHARACTER SET
.
(См. Раздел 10.1.4, "Наборы символов соединения
и Сопоставления".)
Следующие разделы обеспечивают дополнительную деталь о наборах символов Unicode в MySQL.