一般的な絵文字コードポイントと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が絵文字テキストに対して予期しない結果を返す理由の理解に使用します。

試してみる — Unicode Inspector

フルツールを開く