【MySQL】utf8なデータベースで4byte文字を格納する方法
問題
MySQLのutf8なデータベースでは、吉野家の吉(実際は上が長い)とか、スマホの絵文字とか格納できないですよね?
utf8mb4にしないとダメですよね?
答え
格納だけ考えるなら、blob型にするのもよいでしょう。検索は場合によっては問題があるかもしれません。
以下、実験。
text型のカラムを持つテーブルを作る。varcharでもよい。
CREATE TABLE `x` ( `emoji` text ) ENGINE=InnoDB DEFAULT CHARSET=utf8
上のテーブルに絵文字を入れると、
INSERT INTO `x` (`emoji`) VALUES ('ビール🍺おいしい');
4byte文字以降が切れる。
select * from x; emoji ビール
カラムをblob型にすると、
CREATE TABLE `x` ( `emoji` blob ) ENGINE=InnoDB DEFAULT CHARSET=utf8
INSERT INTO `x` (`emoji`) VALUES ('ビール🍺おいしい');
select * from x; emoji ビール🍺おいしい
保存はできた。
検索もアルファベットの大文字小文字が区別されるけれど、できなくはない。
コメント