Skip to main content
CheckTown
开发工具

面向开发者的 Emoji 选择器完全指南

发布于 阅读约 6 分钟
本文目录

什么是 Emoji,开发者为何需要它?

Emoji 是 Unicode 标准中定义的小型象形字符。它最初于 1999 年作为日本手机上的符号出现,如今已发展成一门通用的视觉语言,在 Unicode 15.1 中收录了 3600 多个字符。每个 Emoji 都有唯一的码点——一个供计算机用来渲染正确字形的十六进制标识符。

对开发者而言,Emoji 不只是装饰。它出现在提交信息、文档、界面标签、通知和聊天应用中。理解 Emoji 的编码方式——包括它们的 Unicode 码点、HTML 实体和短代码——对于在 Web 应用、数据库和 API 中正确处理它们至关重要。

Emoji 编码的原理

每个 Emoji 都可以用多种格式表示。理解这些格式有助于开发者在不同平台和编程语言中正确使用 Emoji。

  • Unicode 码点——标准的规范标识符,写作 U+1F600。这是 Unicode 联盟分配的十六进制值。例如,咧嘴笑脸的码点为 U+1F600(十进制 128512)
  • HTML 实体——用于 HTML 标记中:😀(十六进制)或 😀(十进制)。两者都能在浏览器中渲染出相同的 Emoji,且无需源文件采用 UTF-8 编码
  • CSS 代码——用于 CSS content 属性中:\1F600。这在无法直接放置 HTML 实体的伪元素(如 ::before 和 ::after)中很有用
  • 短代码——平台专属的别名,例如 :grinning:,用于 Slack、Discord、GitHub 等消息平台。这些别名在各平台之间并未统一

肤色修饰符又增加了一层复杂度。五个修饰字符(U+1F3FB 至 U+1F3FF)可以附加到人物 Emoji 上以改变其肤色。其结果是一个可见的单个 Emoji,实际由两个 Unicode 字符组成——基础 Emoji 加上修饰符。

免费试用 —— 无需注册

打开 Emoji 选择器 →

在 Web 开发中使用 Emoji

Emoji 在 Web 应用中需要谨慎处理。以下是开发者在处理 Emoji 内容时的几个关键注意事项。

  • 数据库存储——确保数据库使用 utf8mb4 编码(而非仅支持 3 字节字符的 utf8)。大多数 Emoji 需要 4 字节。MySQL、PostgreSQL 和 MongoDB 都支持它,但 MySQL 需要显式配置 utf8mb4 字符集
  • JavaScript 字符串处理——Emoji 在 JavaScript 中以代理对形式编码。字符串 '😀'.length 返回 2 而非 1。请使用 Array.from() 或展开运算符 [...str] 来正确统计字符数。codePointAt() 方法可返回完整的码点
  • HTML 渲染——你可以在 UTF-8 的 HTML 中直接使用 Emoji 字符,也可以使用 HTML 实体(😀)进行显式编码。meta charset 必须设置为 UTF-8。一些较旧的邮件客户端可能无法正确渲染 Emoji,因此在邮件模板中使用 HTML 实体更为稳妥

常见问题

为什么同一个 Emoji 在不同平台上看起来不一样?

Unicode 定义了每个 Emoji 所代表的含义(例如 U+1F600 = 咧嘴笑脸),但每个平台(Apple、Google、Microsoft、Samsung)都会设计自己的视觉表现。Unicode 码点在各处都相同,但图案则因平台而异。这意味着同一个 Emoji 在 iOS、Android 和 Windows 上可能看起来大不相同。

我该如何查找某个 Emoji 的 Unicode 码点?

使用我们的 Emoji 选择器工具——点击任意 Emoji 即可查看它的 Unicode 码点(U+XXXX)、HTML 实体、CSS 代码和短代码。在 JavaScript 中,你也可以用 '😀'.codePointAt(0).toString(16) 以编程方式获取十六进制码点。

对于 Emoji,UTF-8 和 UTF-16 有什么区别?

UTF-8 将大多数 Emoji 编码为 4 字节,而 UTF-16 使用代理对(2 × 2 字节 = 4 字节)。JavaScript 字符串在内部使用 UTF-16,这正是 '😀'.length 返回 2 的原因——它统计的是两个代理对码元,而不是单个码点。对于存储和传输而言,UTF-8 是 Web 应用的标准。

相关工具