MySQL: руководство профессионала
Шрифт:
Для полной распечатки символов gb2312, упорядоченных согласно объединению gb2312_chinese_ci: http://d.udm.net/bar/~bar/charts/gb2312_chinese_ci.html.
MySQL gbk в действительности Microsoft code page 936. Это отличается от официального gbk для символов A1A4 (middle dot), A1AA (em dash), A6E0-A6F5 и A8BB-A8C0. Для получения распечатки различий см. http://recode.progiciels-bpi.ca/showfile.html?name=dist/libiconv/gbk.h.
Для
Для получения распечатки MySQL-символов gbk см. http://d.udm.net/bar/~bar/charts/gbk_chinese_ci.html.
10.11.3: Какие проблемы я должен знать при работе с китайским набором символов Big5?
MySQL поддерживает набор символов Big5, который является общим в Гонконге и на Tайване (Republic of China). MySQL big5 в действительности кодовая страница Microsoft 950, которая очень похожа на оригинальный набор символов big5. Пакет перешео на этот набор символов, начиная с MySQL 4.1.16/5.0.16 (в результате Глюка #12476). Например, следующие инструкции работают в текущих версиях MySQL, но не в старых версиях:
mysql> CREATE TABLE big5 (BIG5 CHAR(1) CHARACTER SET BIG5);
Query OK, 0 rows affected (0.13 sec)
mysql> INSERT INTO big5 VALUES (0xf9dc);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM big5;
+------+
| big5 |
+------+
| хл |
+------+
1 row in set (0.02 sec)
Просьба о добавлении расщирения HKSCS была зарегистрирована. Те, кто нуждается в этом расширении, могут найти интересной предложенную заплатку для Глюка #13577 .
10.11.4: Почему японские преобразования набора символов терпят неудачу?
MySQL поддерживает наборы символов sjis, ujis, cp932 и eucjpms так же, как Unicode. Общая потребность состоит в том, чтобы преобразоваться между наборами символов. Например, есть Unix-сервер (обычно с sjis или ujis) и Windows-клиент (а здесь почти всегда встречается cp932).
В следующей таблице преобразования столбец ucs2 представляет источник, а столбцы sjis, cp932, ujis и eucjpms представляют адресатов, то есть последние 4 столбца обеспечивают шестнадцатеричный результат, когда Вы используете CONVERT(ucs2) или назначаете столбец, содержащий значение ucs2, столбцу в sjis, cp932, ujis или eucjpms.
Имя символа
ucs2
sjis
cp932
ujis
eucjpms
BROKEN BAR
00A6
3F
3F
8FA2C3
3F
FULLWIDTH BROKEN BAR
FFE4
3F
FA55
3F
8FA2
YEN SIGN
00A5
3F
3F
20
3F
FULLWIDTH YEN SIGN
FFE5
818F
818F
A1EF
3F
TILDE
007E
7E
7E
7E
7E
OVERLINE
203E
3F
3F
20
3F
HORIZONTAL BAR
2015
815C
815C
A1BD
A1BD
EM DASH
2014
3F
3F
3F
3F
REVERSE SOLIDUS
005C
815F
5C
5C
5C
FULLWIDTH ""
FF3C
3F
815F
3F
A1C0
WAVE DASH
301C
8160
3F
A1C1
3F
FULLWIDTH TILDE
FF5E
3F
8160
3F
A1C1
DOUBLE VERTICAL LINE
2016
8161
3F
A1C2
3F
PARALLEL TO
2225
3F
8161
3F
A1C2
MINUS SIGN
2212
817C
3F
A1DD
3F
FULLWIDTH HYPHEN-MINUS
FF0D
3F
817C
3F
A1DD
CENT SIGN
00A2
8191
3F
A1F1
3F
FULLWIDTH CENT SIGN
FFE0
3F
8191
3F
A1F1
POUND SIGN
00A3
8192
3F
A1F2
3F
FULLWIDTH POUND SIGN
FFE1
3F
8192
3F
A1F2
NOT SIGN
00AC
81CA
3F
A2CC
3F
FULLWIDTH NOT SIGN
FFE2
3F
81CA
3F
A2CC
Теперь
ucs2
sjis
cp932
NOT SIGN
00AC
81CA
3F
FULLWIDTH NOT SIGN
FFE2
3F
81CA
Это означает, что MySQL преобразовывает NOT SIGN (Unicode U+00AC) в sjis 0x81CA и в cp932 3F (3F как раз и есть знак вопроса (?), то есть то, что всегда используется, когда преобразование не может выполняться.