一般的な絵文字コードポイントとUTF-8エンコーディング
人気の絵文字のUnicodeエンコーディングを探ります。補助多言語面上のコードポイント、4バイトUTF-8シーケンス、UTF-16サロゲートペアを解説します。
Emoji
詳細な説明
Unicodeにおける一般的な絵文字
ほとんどの絵文字は補助多言語面(第1面)のU+1F300以上のコードポイントに位置します。U+FFFFを超えるため、UTF-16では特別な処理(サロゲートペア)が必要で、UTF-8では4バイトを使用します。
人気の絵文字コードポイント
| 絵文字 | コードポイント | UTF-8バイト | UTF-16ユニット | 名前 |
|---|---|---|---|---|
| 😀 | U+1F600 | F0 9F 98 80 | D83D DE00 | GRINNING FACE |
| ❤ | U+2764 | E2 9D A4 | 2764 | HEAVY RED HEART |
| 🌍 | U+1F30D | F0 9F 8C 8D | D83D DF0D | EARTH GLOBE |
| 🚀 | U+1F680 | F0 9F 9A 80 | D83D DE80 | ROCKET |
4バイトUTF-8エンコーディング
U+FFFFを超える絵文字はUTF-8の4バイトシーケンスパターンに従います:
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
UTF-16サロゲートペア
JavaScriptの文字列(UTF-16を使用)では、U+FFFFを超える絵文字はサロゲートペアと呼ばれる2つの16ビットコードユニットとして格納されます。これは"\ud83d\ude00".length === 2がJavaScriptでtrueになることを意味し、1つの目に見える文字を表しているにもかかわらずです。Unicode Inspectorはこのような絵文字を1コードポイントとして正しくカウントしつつ、両方のUTF-16ユニットを表示します。
絵文字シーケンス
多くの現代の絵文字は、ゼロ幅接合子(U+200D)で結合された複数のコードポイントで構成されています。バリエーションセレクター(U+FE0E、U+FE0F)は文字がテキストスタイルで表示されるか絵文字スタイルで表示されるかを制御します。Unicode Inspectorはこのようなシーケンスのすべてのコンポーネントを明らかにします。
ユースケース
Webアプリケーションの絵文字レンダリング問題のデバッグ、データベースストレージのための絵文字を含む文字列の真のバイト長の計算、JavaScriptのstring.lengthが絵文字テキストに対して予期しない結果を返す理由の理解に使用します。