本ページに掲載のリンク及びバナーには広告(PR)が含まれています。
皆さん、iPhoneやAndroidの絵文字を使いますか?
僕は結構使います。そんなiPhoneやAndroidの絵文字ですが、実はMySQLで扱うためには一工夫が必要なのです。
今現在、MySQLは文字エンコードをutf8として運用されていることが多いように見受けられます。
日本語やマレー語にも対応してくれたutf8ならば絵文字も扱えるはずだ!と信じたいものですが、実は残念ながらiPhoneやAndroidの絵文字にはutf8は対応していません。
そんな絵文字に対応する方法を本記事では紹介します。
なんでutf8は絵文字に対応してないのでしょうか?
これは、絵文字はマルチバイト文字の中でも4バイトの領域が必要な文字だからになります。
MySQLのutf8は、1~3バイトの文字しか格納できないので、絵文字が格納できないということになります。
実は、日本語の難しい漢字や一部中国語も4バイトが必要な漢字があるものがあります。
ということは、絵文字が多用される今、MySQLの文字コードはutf8mb4じゃないと正直現実的ではありません。
つまり、MySQLの運用にはutf8mb4が必要なことが多くなることが予想されます。
my.cnfに以下の記載を追加します。
innodb_large_prefix = ON innodb_file_format = Barracuda innodb_file_format_max = Barracuda
innodb_large_prefixは、サイズの大きいカラムを許容する設定です。
utf8mb4は、4バイトの確保が必要なので、VARCHAR(255) のカラムを定義した際には、MySQLのデフォルトのサイズ制限を超えてしまいます。
また、innodb_large_prefixを適用するには、innodb_file_formatをBarracudaにする必要があり、テーブル作成時はROW_FORMATをDYNAMICにする必要があるのでお気をつけください。
上記の設定した上でMySQLのシステム変数のcharacter系統の変数をutf8mb4に変更する必要があります。
mysql> show variables like '%character%'; +--------------------------+-----------------------------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/local/Cellar/mysql/5.7.9/share/mysql/charsets/ | +--------------------------+-----------------------------------------------------+
これで、新規で作成されるテーブルは全てutf8mb4になります。
あります。。。ありますよね!
あとで気付いたパターン。(僕もそうでした
DBの問題ってめんどくさいですよね・・・・!
とまぁ愚痴はここまでにして、あとからutf8mb4を設定する場合はどうするかというところを説明します。
前述の設定を全て設定し終わった後と仮定してお話しますね。
utf8mb4への変換方法は非常にシンプルで、やることは3点だけです。
ALTER DATABASECHARACTER SET utf8mb4; # DBのutf8化 ALTER TABLE ROW_FORMAT=DYNAMIC; #ROW_FORMATの変換 ALTER TABLE CONVERT TO CHARACTER SET utf8mb4; #テーブルのutf8mb化
以上で終了です。簡単でしょう?
-> 参考( MySQL utf8からutf8mb4への変換 - Qiita )
さあ!これであなたの絵文字格納ライフも順風満帆ですよ!
2020年08月18日 | FULL HOUSE運営メディアに「Google Map」の情報が追加されました |
2020年06月05日 | FULL HOUSE運営メディアに「キーワード検索」が実装されました |
2020年04月16日 | グルメメディア「はらへり」、"テイクアウトや宅配が利用できるお店の特集"と"コロナに苦しむ飲食店の応援キャンペーン"を開始 |
2020年02月03日 | 【祝】株式会社FULL HOUSEはお洒落なリノベ一軒家にオフィスを移転しました! |
2019年11月13日 | 株式会社FULL HOUSE、飲食費を支給する「グルメ手当」と美容費を支給する「コスメ手当」を導入 |
ランキング(37) |
転職(79) |
面接(49) |
就活準備(115) |
人事/採用(78) |
スマホアプリ(56) |
iPhoneアプリ(56) |
Androidアプリ(56) |
出会い系/婚活/マッチング(39) |
恋愛/デート(37) |
ゲーム(13) |
アニメ(11) |
洋楽(4) |
映画(7) |