Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«MySQL: руководство профСссионала». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 58

Автор АлСксСй ΠŸΠ°ΡƒΡ‚ΠΎΠ²

– > WHERE DESCRIPTION LIKE '%Chinese%' OR

– > DESCRIPTION LIKE '%Japanese%' OR DESCRIPTION LIKE '%Korean%'

– > ORDER BY CHARACTER_SET_NAME;

+--------------------+---------------------------+

| CHARACTER_SET_NAME | DESCRIPTION |

+--------------------+---------------------------+

| big5 | Big5 Traditional Chinese |

| cp932 | SJIS for Windows Japanese |

| eucjpms | UJIS for Windows Japanese |

| euckr | EUC-KR Korean |

| gb2312 | GB2312 Simplified Chinese |

| gbk | GBK Simplified Chinese |

| sjis | Shift-JIS Japanese |

| ujis | EUC-JP Japanese |

+--------------------+---------------------------+

8 rows in set (0.01 sec)


10.11.14: Как я ΡƒΠ·Π½Π°ΡŽ, являСтся Π»ΠΈ символ X доступным Π²ΠΎ всСх Π½Π°Π±ΠΎΡ€Π°Ρ… символов?


Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Π½Ρ‹Ρ… китайских ΠΈ японских символов Kana ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΎ всСх CJK-Π½Π°Π±ΠΎΡ€Π°Ρ… символов. Π­Ρ‚Π° сохранСнная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ символ UCS-2 Unicode, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ это Π²ΠΎ всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Ρ‹ символов ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.


DELIMITER //

CREATE PROCEDURE p_convert(ucs2_char CHAR(1) CHARACTER SET ucs2)

BEGIN

CREATE TABLE tj (ucs2 CHAR(1) character set ucs2,

utf8 CHAR(1) character set utf8,

big5 CHAR(1) character set big5,

cp932 CHAR(1) character set cp932,

eucjpms CHAR(1) character set eucjpms,

euckr CHAR(1) character set euckr,

gb2312 CHAR(1) character set gb2312,

gbk CHAR(1) character set gbk,

sjis CHAR(1) character set sjis,

ujis CHAR(1) character set ujis);

INSERT INTO tj (ucs2) VALUES (ucs2_char);

UPDATE tj SET utf8=ucs2, big5=ucs2, cp932=ucs2, eucjpms=ucs2, euckr=ucs2,

gb2312=ucs2, gbk=ucs2, sjis=ucs2, ujis=ucs2;


/* If there's a conversion problem, UPDATE will produce a warning. */

SELECT hex(ucs2) AS ucs2, hex(utf8) AS utf8, hex(big5) AS big5,

hex(cp932) AS cp932, hex(eucjpms) AS eucjpms, hex(euckr) AS euckr,

hex(gb2312) AS gb2312, hex(gbk) AS gbk, hex(sjis) AS sjis,

hex(ujis) AS ujis FROM tj;

DROP TABLE tj;

END//


Π’Π²ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌ символом ucs2 ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊΠΎΠ΄Π° (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС) для этого символа. НапримСр, ΠΈΠ· списка Unicode кодирования ΠΈ ΠΈΠΌΠ΅Π½ ucs2 ( http://www.unicode.org/Public/UNIDATA/UnicodeData.txt) ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ символ Katakana Pe появляСтся Π²ΠΎ всСх CJK-Π½Π°Π±ΠΎΡ€Π°Ρ… символов, ΠΈ Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊΠΎΠ΄Π° 0x30da. Если ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для p_convert(), Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ показываСтся здСсь:


mysql> CALL p_convert(0x30da)//

+------+--------+------+-------+---------+-----+------+------+------+------+

| ucs2 | utf8 | big5 | cp932 | eucjpms |euckr|gb2312| gbk | sjis | ujis |

+------+--------+------+-------+---------+-----+------+------+------+------+

| 30DA | E3839A | C772 | 8379 | A5DA |ABDA |A5DA | A5DA | 8379 | A5DA |

+------+--------+------+-------+---------+-----+------+------+------+------+

1 row in set (0.04 sec)


Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца Π½Π΅ 3F, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ символ Π²ΠΎΠΏΡ€ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° (?), ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ сработало.


10.11.15: ΠŸΠΎΡ‡Π΅ΠΌΡƒ CJK-строки Π½Π΅ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π² Unicode? (I)


Иногда люди Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска utf8_unicode_ci ΠΈΠ»ΠΈ ucs2_unicode_ci, Π»ΠΈΠ±ΠΎ сортировка ORDER BY Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ. Π₯отя ΠΌΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ имССтся ошибка, Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π±Ρ‹Π»ΠΎ установлСно, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ людСй Π½Π΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ вСсов для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° объСдинСния Unicode. MySQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½Π°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ Π½Π° http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt. Π­Ρ‚ΠΎ Π½Π΅ пСрвая Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅, Π½Π°Ρ‡Π°Π² с unicode.org, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ MySQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Π°Ρ€ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ 4.0.0 allkeys , Π° Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡƒΡŽ 4.1.0. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΡ‡Π΅Π½ΡŒ остороТны ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ измСнСния упорядочСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ воздСйствуСт Π½Π° индСксы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ситуации Ρ‚ΠΈΠΏΠ° сообщСнной Π² Π“Π»ΡŽΠΊΠ΅ #16526, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


mysql< CREATE TABLE tj (s1 CHAR(1) CHARACTER SET utf8 COLLATE

utf8_unicode_ci);

Query OK, 0 rows affected (0.05 sec)


mysql> INSERT INTO tj VALUES ('ΡƒΠ‘Πœ'),('ΡƒΠ‘Π›');

Query OK, 2 rows affected (0.00 sec)

Records: 2 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM tj WHERE s1 = 'ΡƒΠ‘Π›';

+-----+

| s1 |

+-----+

| ΡƒΠ‘Πœ |

| ΡƒΠ‘Π› |

+-----+

2 rows in set (0.00 sec)


Π‘ΠΈΠΌΠ²ΠΎΠ» Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π΅ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ искали. ΠŸΠΎΡ‡Π΅ΠΌΡƒ MySQL Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ это? Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊΠΎΠ΄Π° Unicode, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ, читая ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ для ucs2-вСрсии символов:


mysql> SELECT s1, HEX(CONVERT(s1 USING ucs2)) FROM tj;

+-----+-----------------------------+

| s1 | HEX(CONVERT(s1 USING ucs2)) |

+-----+-----------------------------+

| ΡƒΠ‘Πœ | 304C |

| ΡƒΠ‘Π› | 304B |

+-----+-----------------------------+

2 rows in set (0.03 sec)


Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ 304B ΠΈ 304C Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 4.0.0 allkeys ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ эти строки:

304B; [.1E57.0020.000E.304B] # HIRAGANA LETTER KA

304C; [.1E57.0020.000E.304B][.0000.0140.0002.3099] # HIRAGANA LETTER GA; QQCM


ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Unicode (послС ΠΌΠ΅Ρ‚ΠΊΠΈ #) ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ Π½Π°ΠΌ японский символ (Hiragana), Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ (символ, Ρ†ΠΈΡ„Ρ€Π° ΠΈΠ»ΠΈ Π·Π½Π°ΠΊ прСпинания) ΠΈ Π·Π°ΠΏΠ°Π΄Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (KA ΠΈΠ»ΠΈ GA, произносимыС ΠΈ нСпроизносимыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‚ΠΎΠΉ ΠΆΠ΅ самой ΠΏΠ°Ρ€Ρ‹ символов). Π‘ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ вСс (primary weight , ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок) 1E57 Π½Π° ΠΎΠ±Π΅ΠΈΡ… строках. Для сравнСний Π² поискС ΠΈ сортировкС MySQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ вСс, игнорируя всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ числа. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сортируСм ΡƒΠ‘Πœ ΠΈ ΡƒΠ‘Π› ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, согласно Unicode спСцификации. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΡ…, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ non-UCA (Unicode Collation Algorithm) объСдинСниС (utf8_unicode_bin ΠΈΠ»ΠΈ utf8_general_ci), Π»ΠΈΠ±ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ значСния HEX(), Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ORDER BY CONVERT(s1 USING sjis). Π‘Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, согласно Unicode, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, нСдостаточно: Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставил Π½Π° рассмотрСниС ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π±Ρ‹Π» ΠΏΡ€Π°Π². ΠœΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ объСдинСниС для японских символов согласно стандарту JIS X 4061, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ высказанныС/нСвысказанныС ΠΏΠ°Ρ€Ρ‹ символов, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ KA/GA, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹ΠΌΠΈ для Ρ†Π΅Π»Π΅ΠΉ упорядочСния.


10.11.16: ΠŸΠΎΡ‡Π΅ΠΌΡƒ CJK-строки Π½Π΅ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π² Unicode? (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅)


Если Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Unicode (ucs2 ΠΈΠ»ΠΈ utf8) ΠΈ Π’Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ порядок сортировки Unicode, Π½ΠΎ MySQL всС Π΅Ρ‰Π΅ сортируСт Π’Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ символов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:


mysql> SHOW CREATE TABLE t\G

******************** 1. row ******************

Table: t

Create Table: CREATE TABLE `t` (`s1` char(1) CHARACTER SET ucs2 DEFAULT NULL)

ENGINE=MyISAM DEFAULT CHARSET=latin1

1 row in set (0.00 sec)


Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ символов ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Ρ‚ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Π° INFORMATION_SCHEMA.COLUMNS ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ этого столбца:


mysql> SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME

– > FROM INFORMATION_SCHEMA.COLUMNS

– > WHERE COLUMN_NAME = 's1' AND TABLE_NAME = 't';

+-------------+--------------------+-----------------+

| COLUMN_NAME | CHARACTER_SET_NAME | COLLATION_NAME |

+-------------+--------------------+-----------------+

| s1 | ucs2 | ucs2_general_ci |

+-------------+--------------------+-----------------+

1 row in set (0.01 sec)


Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ объСдинСниС ucs2_general_ci вмСсто ucs2_unicode_ci. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚Π°ΠΊ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ SHOW CHARSET, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ здСсь:


mysql> SHOW CHARSET LIKE 'ucs2%';

+---------+---------------+-------------------+--------+

| Charset | Description | Default collation | Maxlen |

+---------+---------------+-------------------+--------+

| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |

+---------+---------------+-------------------+--------+

1 row in set (0.00 sec)


Для ucs2 ΠΈ utf8 Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ объСдинСниС: general. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ объСдинСниС Unicode, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ COLLATE ucs2_unicode_ci.


10.11.17: ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ символы ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½Ρ‹ MySQL?


MySQL Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ символы, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ большС, Ρ‡Π΅ΠΌ Π² 3 Π±Π°ΠΉΡ‚Π°Ρ… для UTF-8. ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Basic Multilingual Plane/Plane 0 . Волько нСсколько ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΈΡ… символов Han Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹; ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° для Π½ΠΈΡ… Π½Π΅ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Π°. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°ΠΌ Ρ‚ΠΈΠΏΠ° Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π“Π»ΡŽΠΊΠ΅ #12600, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π½Π΅ ошибка. Π‘ utf8 ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΠ΅Ρ‡ΡŒ Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку, ΠΊΠΎΠ³Π΄Π° сталкиваСмся с Π±Π°ΠΉΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ. Π˜Π½Π°Ρ‡Π΅ ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ Π±Ρ‹, ΠΊΠ°ΠΊΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ символ.


Одно Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ucs2 вмСсто utf8, ΠΊΠΎΠ³Π΄Π° символы ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° Π²ΠΎΠΏΡ€ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ. Однако, Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ усСчСниС Π½Π΅ происходит. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° BLOB ΠΈΠ»ΠΈ BINARY, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ.


10.11.18: Π Π°Π·Π²Π΅ это Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ CJKV?


НСт. Π’Π΅Ρ€ΠΌΠΈΠ½ CJKV (Chinese Japanese Korean Vietnamese) обращаСтся ΠΊ Π²ΡŒΠ΅Ρ‚Π½Π°ΠΌΡΠΊΠΈΠΌ Π½Π°Π±ΠΎΡ€Π°ΠΌ символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Han (ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ китайскиС) символы. MySQL Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ старый Π²ΡŒΠ΅Ρ‚Π½Π°ΠΌΡΠΊΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ символы Han. MySQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ соврСмСнный Π²ΡŒΠ΅Ρ‚Π½Π°ΠΌΡΠΊΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с символами Western.


Π“Π»ΡŽΠΊ #4745 ΠΏΡ€ΠΎΡΡŒΠ±Π° ΠΎ спСциализированном Π²ΡŒΠ΅Ρ‚Π½Π°ΠΌΡΠΊΠΎΠΌ объСдинСнии, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Ссли имССтся достаточная ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² этом.


10.11.19: MySQL позволяСт символам CJK ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΈΠΌΠ΅Π½Π°Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†?


Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° отфиксирована Π² MySQL 5.1, автоматичСски пСрСписывая ΠΈΠΌΠ΅Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ².


НапримСр, Ссли Π’Ρ‹ создаСтС Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ†Π΅ΠΎ Π½Π° сСрвСрС, Ρ‡ΡŒΡ опСрационная систСма Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ CJK Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², MySQL создаСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ @ [email protected]@00ae, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΡ‡ΡƒΠ΄Π»ΠΈΠ²Ρ‹ΠΌ способом кодирования E6A5AE, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС для Unicode-символа Ρ†Π΅ΠΎ. Однако, Ссли Π’Ρ‹ выполняСтС ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ SHOW DATABASES, Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… пСрСчислСна ΠΊΠ°ΠΊ Ρ†Π΅ΠΎ.


10.11.20: Π“Π΄Π΅ я ΠΌΠΎΠ³Ρƒ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ руководства ΠΏΠΎ MySQL Π½Π° китайский, корСйский ΠΈ японский языки?


УпрощСнная китайская вСрсия руководства для MySQL 5.1.12 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π° Π½Π° http://dev.mysql.com/doc/#chinese-5.1. Японская для MySQL 4.1 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° с http://dev.mysql.com/doc/#japanese-4.1.