😀 - 这张脸是怎么传递的?
当你在微信上给朋友发送 😂 时,这个表情符号是如何到达对方手机的?是发送了一张图片吗?实际上并不是。表情符号是以"字符"的形式发送的。
表情符号是"字符"
表情符号和字母"A"或汉字"山"一样,都是"字符"。在计算机世界中,每个字符都被分配了一个编号。"A"是 65 号,"あ"是 12354 号,😀 (笑脸) 是 128512 号。
这套编号系统叫做 Unicode。Unicode 是一个国际标准,将全世界的文字统一在一个编号体系下管理,截至 2024 年已注册了约 15 万个字符。表情符号也是这个体系的一部分。
所以当你发送 😀 时,实际在网络上传输的只是数字"128512" (以 UTF-8 字节序列编码)。那个彩色的笑脸图案是接收设备在收到数字后绘制出来的。
为什么同一个表情符号在不同设备上看起来不一样
从 iPhone 发送的 🍕 (披萨) 在 Android 上可能会显示为略有不同的设计。这是因为 Unicode 只定义了编号和名称,"披萨表情 = U+1F355",而实际的设计由各平台自行决定。
- Apple:写实的立体风格设计
- Google:圆润的流行风格设计
- Samsung:独特风格 (曾因与其他厂商差异过大而引发话题)
- Microsoft:从扁平设计过渡到 3D 设计
- X (原 Twitter):使用自有的 Twemoji 表情集
设计差异可能导致误解。有研究报告指出,同一个"微笑"表情在不同平台上给人的印象截然不同,"开心"、"讽刺"或"诡异"。
表情符号乱码 - 为什么会变成 □ 或 ?
有时你发送一个新的表情符号,在对方屏幕上却显示为 □ (豆腐块) 或 ?。这是一种字符编码失败的现象。
- 操作系统过旧:每年都会新增表情符号,但旧版操作系统没有对应的字体
- 不支持的字体:收到了编号,但设备没有该编号对应的设计
- 编码不匹配:极少数情况下,字符编码转换可能导致编号偏移
□ 符号被称为"豆腐",因为它的方形看起来像一块豆腐。Google 的字体"Noto"名称来源于"No more tofu" (不再有豆腐块)。
新表情符号是如何添加的
新表情符号由非营利组织 Unicode 联盟每年审核并添加。任何人都可以提议新的表情符号,但必须通过严格的审核才能被采纳。
- 提案必须包含"为什么需要这个表情符号"的证据
- 必须证明现有表情符号无法替代
- 代表特定公司或品牌的表情符号会被拒绝
- 从提案到采纳通常需要约 2 年时间
2010 年表情符号首次在 Unicode 6.0 中正式标准化时,一次性添加了 722 个表情符号。它们最初在日本手机 (i-mode) 上使用,后来因被纳入 iPhone 的日语键盘而传播到全世界。"emoji"这个词本身就是日语。
总结
表情符号不是图片,而是"字符"。它们以 Unicode 编号的形式在网络上传输,由接收设备渲染出设计。这就是为什么不同平台上的设计不同,以及为什么在旧系统上会显示为 □。下次发送表情符号时,不妨想象一下它背后的数字正在经过 DNS 解析、TCP 连接和 TLS 加密到达对方。