よこのじ(@yokonoji_work)です。
HTMLの記述でお馴染みの文字コードutf-8ですが、レンタルサーバーの設定でutf-8mb4というものを見かけましたので、その違いを確認してみました。
この違いを知っておかないと、MySQLにおける文字コードの不具合に悩まされるかもしれません。
この機会に文字コードutf8とutf8mb4の違いを確認しておきましょう。
文字コード utf-8 とは?
utf-8は世界で最も普及している文字コードです。
アルファベット、数字、記号といった基本的な文字を表すASCIIコードに、さらに世界中のあらゆる文字(例えばハングル文字やアラビア文字など)を加えた文字の集合体をUnicodeといいます(これには絵文字なども含まれています)。
utf-8はUnicodeに含まれる文字を符号化したもの(=コードと対応させたもの)になります。たとえば「あ」なら「E38182」といったようにコードと対応しています。
Shift-JISなどの日本語を扱える文字コードはありますが、他の文字コードで書かれた文字が文字化けするなどの問題から文字コードを使い分ける必要がありました。
こういった問題は、utf-8という世界中の文字を一つの文字コードで扱えるようになった今ではほとんどなくなっています。
文字コード utf-8mb4 とは?
utf-8mb4はデータベースMySQLで扱うための文字コードです。
utf-8は1~4バイトで文字を表現しますが、MySQLでは3バイトの文字までしか扱えないため、4バイトの文字は使用できません。
これを解決する、つまりutf-8の4バイトに該当する文字を扱えるようにしたのがutf-8mb4ということになります。
絵文字などはutf-8の4バイトに当たるので、utf-8mb4でないと絵文字が扱えないということになります。
なぜこのようなことになったかというと、これはMySQLの仕様や歴史的背景が絡むようですので、ご興味ある方は下の参考にあるリンク先などをご確認ください。
[itemlink post_id=”2920″]
[toggle title=”参考サイト”]
初心者でも分かる「文字コードはとりあえずUTF-8にする」という歴史的背景
UTF-8 【 UCS Transformation Format 8 】 Unicode Transformation Format-8
utf8mb4 文字セット (4 バイトの UTF-8 Unicode エンコーディング)
[/toggle]