文字コードutf8とutf8mb4の違いとは?
HTMLの記述に使用する文字コードと言えばutf8ですが、似たような文字コードとしてutf8mb4というものもありますよね。この2つの文字コードは似ているようで違いがあるため、覚えておかないと文字化けを起こしてしまったり文字コードによる不具合を起こして困ってしまうケースもあるので注意しましょう。この記事では、文字コードutf8とutf8mb4の違いを説明していきます。
まずutf8(UTF-8)とは、世界中に普及している文字コードです。正式名称は、ISO/IEC 10646においては「UCS Transformation Format」・Unicodeでは 「Unicode Transformation Format-8」と呼びます。2バイト目以降にASCII文字が現れないように仕様が整っている点から、「UTF-FSS (File System Safe) 」とも呼ばれることがあります。
アルファベット・数字・記号・世界各国の文字など文字の集合体のことを「Unicode」と呼びます。utf8はUnicodeに含まれている文字をコードに対応させたもので、「a」なら「EFBD81」のようになります。日本語を入力する際に昔はShift-JISなどを使用して日本語を入力していましたが、他の文字コードで入力された文字が文字化けしてしまうといった問題がありました。しかしutf8の登場によりほとんどの文字をutf8で入力できるようになったため、現在では文字コードはutf8の一つで事足りる状態になっています。
ではutf8mb4とは何かと言いますと、データベースであるMySQLで使用するための文字コードとなります。utf8は1~4バイト文字を扱うことができるのですが、MySQLにおけるutf8では3バイトまでの文字しか扱うことができないため、utf8の4バイト文字に該当する文字を使用するために作成されたのがutf8mb4です。
utf8では4バイト文字に該当する絵文字などはMySQLでは使用することができないため、utf8mb4を使う必要があるわけですね。utf8mb4を使わないと文字化けを起こしてしまいます。日本語を使用するユーザーの場合はutf8ではなくutf8mb4を使用することを忘れないようにしましょう。MySQL8.0以降のバージョンではデフォルトで文字コードがutf8mb4となっているのでご安心ください。