11. リリースノートより
● “MySQL :: MySQL 5.5 Release Notes ::
Changes in MySQL 5.5.3 (2010-03-24,
Milestone 3)”
http://dev.mysql.com/doc/relnotes/mysql/5.5/en
/news-5-5-3.html
The utf8mb4 character set has been added.
This is similar to utf8, but its encoding
allows up to four bytes per character to
enable support for supplementary
characters.
16. db にutf8mb4を指定して4バイト文
字を書き込んでみる
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON test_utf8.*
TO test_utf8@localhost
IDENTIFIED BY 'XXXXXXXXXXXXX';
CREATE DATABASE test_utf8 CHARACTER SET utf8mb4;
USE test_utf8;
CREATE TABLE test_utf8.moji(id int, moji text) CHARACTER SET
utf8mb4;
INSERT INTO test_utf8.moji(id, moji) values( '1', 'あいうえお' );
INSERT INTO test_utf8.moji(id, moji) values( '2', '寿司�susi');
FLUSH PRIVILEGES;
$ mysqldump -uroot -p -t test_utf8 moji | grep 'INSERT INTO'
Enter password:
INSERT INTO `moji` VALUES (1,'あいうえお'),(2,'寿司????susi');
あれ?4バイト取られてますが,「🍣」 ではなく「????」になってしまっ
ています….
17. 文字コードを確認
$ mysqldump -uroot -p -t test_utf8 moji | grep 'INSERT INTO'|od -xc
0000000 4e49 4553 5452 4920 544e 204f 6d60 6a6f
I N S E R T I N T O ` m o j
0000020 6069 5620 4c41 4555 2053 3128 272c 81e3
i ` V A L U E S ( 1 , ' 343 201
0000040 e382 8481 81e3 e386 8881 81e3 278a 2c29
202 343 201 204 343 201 206 343 201 210 343 201 212 ' ) ,
0000060 3228 272c afe5 e5bf b88f 3f3f 3f3f 7573
( 2 , ' 345 257 277 345 217 270 ? ? ? ? s u
0000100 6973 2927 0a3b
s i ' ) ; n
0000106
`3f` なのでそのまま `?` ですね….
ファイルから書き込んでるので途中でおかしくなってるのかも?
18. MySQL の端末から書いてみる
mysql> INSERT INTO test_utf8.moji(id, moji) values( '3', '寿司
�ssusi' );
Query OK, 1 row affected (0.05 sec)
mysql> select * from moji;
ERROR 1046 (3D000): No database selected
mysql> select * from test_utf8.moji;
+------+-----------------+
| id | moji |
+------+-----------------+
| 1 | あいうえお |
| 2 | 寿司????susi |
| 3 | 寿司�ssusi |
+------+-----------------+
3 rows in set (0.00 sec)
OKぽい