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

10.1.14.7. Азиатские Наборы символов

Азиатские наборы символов, которые мы поддерживаем, включают китайский, японский, корейский, и тайский язык. Они могут быть усложнены. Например, китайские наборы должны учесть тысячи различных символов. См. Раздел 10.1.14.7.1," cp932 Набор символов", для дополнительной информации о cp932 и sjis наборы символов.

Для ответов на некоторые общие вопросы и проблемы, связывающие поддержку азиатских наборов символов в MySQL, см. Раздел B.11, "FAQ MySQL 5.7: MySQL Chinese, японский язык, и корейские Наборы символов".

big5_chinese_ci виды сопоставления на числе штрихов.

Для дополнительной информации об азиатских сопоставлениях в MySQL см. Collation-Charts.Org (big5, cp932, eucjpms, euckr, gb2312, gbk, sjis, tis620, ujis).

10.1.14.7.1. cp932 Набор символов

Почему cp932 необходимый?

В MySQL, sjis набор символов соответствует Shift_JIS набор символов, определенный IANA, которое поддерживает JIS X0201 и JIS символы X0208. (См. http://www.iana.org/assignments/character-sets.)

Однако, значение "JIS SHIFT" как описательный термин стало очень неопределенным, и это часто включает расширения Shift_JIS это определяется различными поставщиками.

Например, "JIS SHIFT", используемый в японских средах Windows, является расширением Microsoft Shift_JIS и его точное имя Microsoft Windows Codepage : 932 или cp932. В дополнение к символам, поддерживаемым Shift_JIS, cp932 поддерживает символы расширения, такие как NEC специальные символы, выбранный NEC — IBM расширенные символы, и IBM выбранные символы.

Много японских пользователей испытали проблемы, используя эти символы расширения. Эти проблемы происходят от следующих факторов:

  • MySQL автоматически преобразовывает наборы символов.

  • Наборы символов преобразовываются, используя Unicode (ucs2).

  • sjis набор символов не поддерживает преобразование этих символов расширения.

  • Есть несколько правил преобразования от так называемого "JIS SHIFT" к Unicode, и некоторые символы преобразовываются в Unicode по-другому в зависимости от правила преобразования. MySQL поддерживает только одно из этих правил (описал позже).

MySQL cp932 набор символов разрабатывается, чтобы решить эти проблемы.

Поскольку MySQL поддерживает преобразование набора символов, важно разделить IANA Shift_JIS и cp932 в два различных набора символов, потому что они обеспечивают различные правила преобразования.

Как делает cp932 отличайтесь от sjis?

cp932 набор символов отличается от sjis следующими способами:

  • cp932 поддерживает NEC специальные символы, выбранный NEC — IBM расширенные символы, и IBM выбранные символы.

  • Некоторые cp932 у символов есть две различных кодовых точки, обе из которых преобразовывают в ту же самую кодовую точку Unicode. Преобразовывая из Unicode назад к cp932, одна из кодовых точек должна быть выбрана. Для этого "кругового преобразования" используется правило, рекомендуемое Microsoft. (См. http://support.microsoft.com/kb/170559/EN-US/.)

    Правило преобразования работает как это:

    • Если символ находится и в JIS X 0208 и в NEC специальные символы, используйте кодовую точку JIS X 0208.

    • Если символ находится и в NEC специальные символы и в IBM выбранные символы, используйте кодовую точку NEC специальные символы.

    • Если символ находится и в IBM выбранные символы и в выбранном NEC — IBM, расширенные символы, используют кодовую точку IBM расширенные символы.

    Таблица, показанная в http://www.microsoft.com/globaldev/reference/dbcs/932.htm, предоставляет информацию о значениях Unicode cp932 символы. Для cp932 записи таблицы с символами, под которыми четырехзначное число появляется, число, представляют соответствующий Unicode (ucs2) кодирование. Поскольку записи таблицы с подчеркнутым двухразрядным значением появляются, есть диапазон cp932 символьные значения, которые начинаются с тех двух цифр. Щелчок по такой записи таблицы берет Вас к странице, которая выводит на экран значение Unicode для каждого из cp932 символы, которые начинаются с тех цифр.

    Ссылки особенно интересны. Они соответствуют кодировкам для следующих наборов символов:

  • cp932 поддерживает преобразование определяемых пользователем символов в комбинации с eucjpms, и решает проблемы с sjis/ujis преобразование. Для получения дополнительной информации, пожалуйста, обратитесь к http://www.opengroup.or.jp/jvc/cde/sjis-euc-e.html.

Для некоторых символов, преобразования в и от ucs2 отличается для sjis и cp932. Следующие таблицы иллюстрируют эти различия.

Преобразование в ucs2:

sjis/cp932 Значение sjis -> ucs2 Преобразование cp932 -> ucs2 Преобразование
5C 005C 005C
7E 007E 007E
815C 2015 2015
815F 005C FF3C
8160 301C FF5E
8161 2016 2225
817C 2212 FF0D
8191 00A2 FFE0
8192 00A3 FFE1
81CA 00AC FFE2

Преобразование из ucs2:

ucs2 значение ucs2 -> sjis Преобразование ucs2 -> cp932 Преобразование
005C 815F 5C
007E 7E 7E
00A2 8191 3F
00A3 8192 3F
00AC 81CA 3F
2015 815C 815C
2016 8161 3F
2212 817C 3F
2225 3F 8161
301C 8160 3F
FF0D 3F 817C
FF3C 3F 815F
FF5E 3F 8160
FFE0 3F 8191
FFE1 3F 8192
FFE2 3F 81CA

Пользователи любых японских наборов символов должны знать то использование --character-set-client-handshake (или --skip-character-set-client-handshake) имеет важный эффект. См. Раздел 5.1.3, "Опции Команды Сервера".