MySQL 5.5.3 以降では、文字コードを「utf8」ではなく「utf8mb4」と指定することで、UTF-8 の4バイト文字に対応できる。

MySQLの5.5.3というバージョンではようやく4バイトのUTF-8への対応が図られたようです。5.5.3の変更点を記したページに記されています。

これを使えば、魚の名前の𩸽(ほっけ、U+29E3D)だとか、偏旁の𧾷(足偏、U+27FB7)だとか、あるいは日本の地名として𣖔木作(ほうのきざく、福島県)の「𣖔」(U+23594)や𣗄代(たらのきだい、山形県)の「𣗄」(U+235C4)などといった、JIS X 0213に含まれる漢字がようやく扱えるようになります。一部の人が希望しているであろうIVSや(今後のバージョンのUnicodeに入る予定の)携帯絵文字に対応するにも4バイトのUTF-8は必要です。

ただし、文字コードの指定として、従来の "utf8" とは別に、"utf8mb4" という名前を持つ別の文字コードとして定義されているようなので注意が必要です。

MySQLの"UTF-8"にご用心 - yanok.net

某環境での作業の記録、44ツイート。
nilog: 2015-02-27

想定外だったこと。

  • TEXT 型カラムの文字コードを utf8mb4 に変更したら MEDIUMTEXT 型に変わってしまった
  • インデックスの制限「Specified key was too long; max key length is 767 bytes」にひっかかった
  • データがたくさん入っているテーブルで「alter table <table name> default character set utf8mb4;」がぜんぜん終わってくれなかった

思ったより手間がかかった。。

tags: mysql java unicode

Posted by NI-Lab. (@nilab)