Emoji背后的技术:Unicode编码与Emoji发展史
2026年2月 · 阅读时间 4分钟
每天我们发送数十亿个Emoji,但你知道😀背后是怎么工作的吗?一个笑脸是如何从你的手机传到对方屏幕上的?
Emoji的起源
Emoji(絵文字)起源于1999年日本,由NTT DoCoMo的栗田穣崇设计了最初的176个Emoji。2010年,Unicode 6.0正式收录Emoji,从此Emoji成为全球标准。
Emoji是怎么工作的?
Emoji本质上就是Unicode字符,和字母"A"(U+0041)没有区别:
😀 → U+1F600 (Grinning Face)
❤️ → U+2764 + U+FE0F (Red Heart)
👨💻 → U+1F468 + U+200D + U+1F4BB (Man Technologist)
🇨🇳 → U+1F1E8 + U+1F1F3 (Flag: China)
为什么同一个Emoji在不同平台长得不一样?
Unicode只定义了Emoji的名称和含义,不规定外观。每个平台(Apple、Google、Microsoft、Samsung)自己设计Emoji的样式。
⚠️ 这可能导致误解!同一个Emoji在不同平台上的表情可能差异很大。
比如🔫在Apple上是水枪,在某些平台上曾经是真枪。
Emoji的组合技术
- ZWJ序列 — 用零宽连接符(U+200D)组合多个Emoji:👨 + 💻 = 👨💻
- 肤色修饰符 — 基础Emoji + 肤色修饰符:👋 + 🏽 = 👋🏽
- 国旗 — 两个区域指示符组合:🇨 + 🇳 = 🇨🇳
- 变体选择符 — U+FE0F让文本字符显示为Emoji样式:❤ → ❤️
开发中使用Emoji的注意事项
✅ 数据库使用 utf8mb4 编码(MySQL的utf8不支持4字节Emoji)
✅ 字符串长度计算要注意:一个Emoji可能占2-7个UTF-16码元
✅ JavaScript中用 Array.from() 正确分割含Emoji的字符串
✅ 正则匹配Emoji用 Unicode属性:/\p{Emoji}/u
❌ 不要用 string.length 计算含Emoji的字符数
Emoji数量
截至Unicode 16.0(2024年),共有3,790个Emoji。每年Unicode联盟都会审核新Emoji提案并发布更新。
在线Emoji工具
需要快速找到合适的Emoji?试试我们的 Emoji搜索工具,按关键词搜索,一键复制使用。
更多工具请访问 www.cyunyun.com。