Magic UI
Back to all articles
Notes

Emoji小知识

Explore essential React Native libraries that will streamline your mobile app development and enhance functionality.

Emoji小知识

UTF-8 编码下的 emoji 大小不是固定的,可能占用 3~8 字节
参考:Unicode Emoji 列表

比如,可以用以下正则匹配所有 四字节 emoji

[\\u{10000}-\\u{10FFFF}]

原理说明

  1. UTF-8 编码长度

    • 常见的 BMP(Basic Multilingual Plane)字符占用 1~3 字节。
    • 超出 BMP 范围的字符(如大部分 emoji)会占用 4 字节。
    • 某些 emoji 由多个 Unicode 码点组合而成(如带肤色、性别的变体),可能达到 8 字节甚至更多。
  2. 正则匹配四字节字符

    • \u{10000}-\u{10FFFF} 表示 Unicode 编码范围在 U+10000 到 U+10FFFF 的字符。
    • 这些字符在 UTF-8 中会被编码为 4 字节。
    • 在 JavaScript 中需要开启 u(Unicode)标志才能正确解析:
      const regex = /[\u{10000}-\u{10FFFF}]/gu;