UTF-8 可変長エンコーディングです。 UTF-8の場合、これは1つのコードポイントを格納するために1〜4バイトが必要であることを意味します。ただし、「utf8」(別名「utf8mb3」)と呼ばれるMySQLのエンコーディングは、コードポイントごとに最大3バイトしか格納しません。
したがって、文字セット "utf8" / "utf8mb3"は、すべてのUnicodeコードポイントを格納することはできません。0x000から0xFFFFの範囲のみをサポートします。これは、 "基本多言語面
"。
これは(同じページの以前のバージョンで)MySQLドキュメント それについて言わなければならない:
utf8 [/ utf8mb3]という名前の文字セットは、文字ごとに最大3バイトを使用し、BMP文字のみを含みます。 MySQL 5.5.3以降、utf8mb4文字セットは1文字あたり最大4バイトを使用し、補足文字をサポートします。
BMP文字の場合、utf8 [/ utf8mb3]とutf8mb4のストレージ特性は同じです。つまり、同じコード値、同じエンコーディング、同じ長さです。
補助キャラクターの場合、 utf8[/utf8mb3]はキャラクターをまったく保存できません 、utf8mb4はそれを格納するために4バイトを必要とします。 utf8 [/ utf8mb3]は文字をまったく格納できないため、utf8 [/ utf8mb3]列に補助文字はなく、utf8[/utf8mb3]データを古いバージョンからアップグレードするときに文字を変換したりデータを失ったりする心配はありません。 MySQL。
したがって、絵文字 、「utf8mb4」を使用します。 実際に使用されている最も一般的な非BMPUnicode文字は何ですか? 。