Объединения gb2312 (GB2312 Simplified Chinese):
gb2312_bin
gb2312_chinese_ci (значение по умолчанию)
Объединения gbk (GBK Simplified Chinese):
gbk_bin
gbk_chinese_ci (значение по умолчанию)
Объединения sjis (Shift-JIS Japanese):
sjis_bin
sjis_japanese_ci (значение по умолчанию)
Объединения tis620 (TIS620 Thai):
tis620_bin
tis620_thai_ci (значение по умолчанию)
Объединения ujis (EUC-JP Japanese):
ujis_bin
ujis_japanese_ci (значение по умолчанию)
10.10.7.1. Набор символов cp932
А на кой вообще нужен cp932?
В MySQL набор символов sjis соответствует Shift_JIS определенному IANA, который поддерживает символы JIS X0201 и JIS X0208 (см. http://www.iana.org/assignments/character-sets).
Однако, значение SHIFT JIS как описательный термин стало очень неопределенным, и это часто включает расширения Shift_JIS, которые определены различными поставщиками. Короче, больше стандартов, хороших и разных!
Например, SHIFT JIS, использованный в Japanese Windows, представляет расширение Shift_JIS от Microsoft, и его точное название Microsoft Windows Codepage: 932 или cp932. В дополнение к символам, обеспечиваемым Shift_JIS, cp932 поддерживает символы расширения типа специальных и изюранных символов NEC и расширенных символов IBM.
Много японских пользователей испытали проблемы при использовании этих символов расширения. Эта проблема складывается из следующих факторов:
MySQL автоматически преобразовывает наборы символов.
Наборы символов преобразованы через Unicode (ucs2).
Набор символов sjis не поддерживает преобразование этих символов расширения.
Имеются несколько правил преобразования из так называемого SHIFT JIS в Unicode, и некоторые символы преобразованы в Unicode по-другому, в зависимости от правила преобразования. MySQL поддерживает только одно из этих правил.
Набор символов MySQL cp932 разработан, чтобы решить эти проблемы.
Поскольку MySQL поддерживает преобразование набора символов, важно отделить IANA Shift_JIS от cp932: это два различных набора символов, потому что они обеспечивают разные правила преобразования.
А в чем разница между cp932 и sjis?
Набор символов cp932 отличается от sjis следующим:
cp932 поддерживает специальные и избранные символы NEC, а также расширенные символы от 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 и в расширенных символах IBM, применяется код из расширенных символов IBM.
Таблица, показанная на http://www.microsoft.com/globaldev/reference/dbcs/932.htm обеспечивает информацию относительно значений Unicode символов cp932. Для входов таблицы с символами cp932, под которыми появляется четырехразрядный код, он представляет соответствующий код из Unicode (ucs2). Для входов таблицы с подчеркнутым значением с двумя цифрами имеется диапазон символьных значений cp932, которые начинаются с тех двух цифр. Щелчок на таком входе таблицы отправит Вас к странице, которая отображает значение Unicode для каждого из символов cp932, которые начинаются с тех цифр.
Следующие ссылки имеют особый интерес. Они соответствуют кодированию для следующих наборов символов: