4æã«MySQLã®æ¥æ¬èªã³ã¬ã¼ã·ã§ã³ã«ã¤ãã¦èªãåãå ´ã«å¼ã°ãã¦ãããã話ãèãã¦ãã¾ãããããã«ããã°ãæ¸ããã¨æã£ããã§ãããã¯ã2ã¶æçµéâ¦ã
ã¨ãã©ããèªåãMySQLã®æåã³ã¼ãã«é¢ãã¦çºè¡¨ããéã«ã次ã®ãããªã¹ã©ã¤ããããã¦ããã§ããã
MySQL 8.0 ã§ã¨ãã¨ãæ¥æ¬èªã³ã¬ã¼ã·ã§ã³ãå ¥ããã¨ã«ãªã£ãã®ã«ããªããæå¾ ãã¦ãã®ã¨éãã¾ããã
ã§ããã®è¾ºã®è©±ãèãã¾ããï¼2ã¶æãçµã£ã¦ãã®ã§ããè¦ãï¼ã
Q. ããããæ¥æ¬èªãã±ã¼ã«ä½ããã ã£ããæ¥æ¬äººãæ±ãããããã±ã¼ã«ã«ãã¦ã»ãã
utf8mb4_ja_0900_as_cs
ã¯MySQLãç¬èªã«èãããã®ã§ã¯ãªããUnicodeè¦æ ¼ã«å¾ã£ã¦ãããéå»ã«ããããç¬èªã«ãã£ã¦å¤±æãã¦ãã¦ãã®ã§ãããç¬èªã«ããã®ã¯é¿ããããai(accent insensitive)ã§ããã=ããã=ãããã«ãªãã®ããci(case insensitive)ã§ããã=ãããã«ãªãã®ãUnicodeã«å¾ã£ã¦ããã
Q. ja_0900_as_cs
㯠0900_as_cs
ã¨ä½ãéãã®ï¼
utf8mb4_ja_0900_as_cs
ã¯æ¥æ¬èªåºæã®è¦åã«å¾ããCLDRåç §ãé·é³è¨å·ãã¼ãã®é åºãåã®åã«ãã£ã¦ç°ãªãããã¨ãã°ãã¢ã¼ãã¯ãã¢ã¤ããããåã ããã¦ã¼ãã¯ãã¦ã¤ããããå¾ã
ãããªåã£ããã¨ãã¦ãã®ãâ¦ã
ãã®ä»
ã³ã¬ã¼ã·ã§ã³ã¯ xml ãã¡ã¤ã«ãç½®ããã¨ã§ç¬èªã«å®ç¾©ã§ããã®ã§ãæ¨æºã®ã³ã¬ã¼ã·ã§ã³ãæ°ã«å ¥ããªãã®ãªãèªåã§å®ç¾©ããã°ããã
ãã«ããã¤ãæåã¯ãªã³ã³ãã¤ã«ããªãã¨çµã¿è¾¼ããªãã¨æã£ã¦ã¾ããããããã¯æåã»ããã®è©±ã§ã³ã¬ã¼ã·ã§ã³ã«ã¤ãã¦ã¯ã³ã³ãã¤ã«ä¸è¦ã¨ã®ãã¨ã§ããã
ã¡ããã¨ããã¥ã¢ã«ã«ãæ¸ãã¦ããã¾ããã10.4.4 Unicode æåã»ããã¸ã® UCA ç §åé åºã®è¿½å
ja_0900_as_cs
ã¯ã²ãããªã¨ã«ã¿ã«ããåºå¥ããªãããåºå¥ãããå ´åã®ããã«ja_0900_as_cs_ks
ã¨ããã³ã¬ã¼ã·ã§ã³ãä½ããã¨ãã¦ããã
ãã¼ããå人çã«ã¯ããã¾ã§åºå¥ããããã ã£ãã utf8mb4_bin
ã§ããããªâ¦ã
MySQLã¯æ¨æº(Unicode)ã«å¾ã£ã¦ãã ããªã®ã§ãç¬èªã«ããããªãã¨ããã¦ããããã§ã¯ãªãã¨ãããã¨ã§ããã
ããã¦Unicodeã®æ¥æ¬èªã®ç §åé åºã¯JIS X 4061ãå ãªã®ã§ãæ¥æ¬èªã®æ±ããããããã¨æ¥æ¬äººãMySQLã«å¯¾ãã¦è¨ãã®ã¯ããåããã¼ãªï¼ãç¶æ ã§ãããç³ã訳ããã¾ããã§ããï¼
ãã¨æè¿ç¥ã£ãã®ã§ãããja_0900_as_cs
ã®å ´åã¯ãæ¼¢åã®é çªãã¡ããã¨JISé ã«ãªã£ã¦ã¾ããã
試ãã¦ã¿ãã¨ãUTF-8ã®æåã³ã¼ãé ã§ã¯ãªãJISã³ã¼ãé (é³èªã¿ã®é )ã«ãªã£ã¦ãããã¨ããããã¾ãã
mysql> select hex(s),s from ja_0900_as_cs order by s; +--------+------+ | hex(s) | s | +--------+------+ | E4BA9C | äº | | E4BC8A | ä¼ | | E99BA8 | é¨ | | E6A084 | æ | | E5A5A5 | 奥 | +--------+------+
æ¥çã«ãã£ã¦ã¯å®ã¯çµæ§å¬ããã®ããããã¾ããã