首页| 版块| 我的| 发帖| 消息
主题:关于emoji [电脑版]
zhangjingyu发表于 2026-08-09 16:42
“emoji有什么特别的吗?好像就是表情样的图形而已”(引用内容)哈哈,看似简单,其实很特别! 😄

一、emoji 和普通文字的区别
普通文字(中文"你"):
存储:3个字节(UTF-8)
    E4 BD A0
    单一字符
    显示:你

emoji(😄):
存储:4个字节(UTF-8)
    F0 9F 98 84
    也是单一字符
    显示:😄
看起来一样?但其实差别很大!

二、emoji 的特殊之处
1. 不是所有编码都支持
编码    支持 emoji?    说明
ASCII    ❌    只有英文
GB2312    ❌    只有简体中文
GBK    ❌    简体+繁体,无 emoji
UTF-8    ✅    支持所有 Unicode
UTF-8mb4    ✅    完整支持 emoji
你的数据库是 GBK,所以不支持 emoji 的存储!

2. emoji 有"组合"功能
单个 emoji 可以组合成新的!
👨 + 👩 + 👧 + 👦 = 👨‍👩‍👧‍👦(一家四口)
这个组合用了 4 个 emoji + 连接符(‍)
实际占:4 × 4字节 + 连接符 = 17+ 字节!

3. emoji 有"肤色"变化
👋(默认黄色)
    ↓ 加肤色修饰符
👋🏻(肤色1)
👋🏼(肤色2)
👋🏽(肤色3)
👋🏾(肤色4)
👋🏿(肤色5)
这些都是同一个 emoji + 肤色修饰符组合的!

4. emoji 可以带"性别"
🙋(默认女性)
    ↓ 加性别修饰符
🙋‍♂️(男性)
🙋‍♀️(女性)

5. 不同设备显示不同
设备    😄 显示
iPhone    😄(苹果风格)
Android    😄(谷歌风格)
Windows    😄(微软风格)
微信    😄(腾讯风格)
都是同样的 Unicode 编码,但画风不同!

三、emoji 为什么这么"麻烦"?
历史原因:
早期:ASCII(只有英文)
    ↓
中国:GB2312(加中文)
    ↓
日本:Shift-JIS(加日文,最早加入表情符号)
    ↓
Unicode 统一:把所有文字放一起
    ↓
Unicode 6.0(2010年):正式加入 emoji
    ↓
现在:emoji 已经是 Unicode 标准的一部分

技术原因:
Unicode 码点范围:
    中文:U+4E00 ~ U+9FFF(基本)
    日文:U+3040 ~ U+30FF
    emoji:U+1F600 ~ U+1F64F(笑脸表情)
           U+1F300 ~ U+1F5FF(符号)
           U+1F680 ~ U+1F6FF(交通)
           U+1F900 ~ U+1F9FF(补充)
    emoji 在 16 位范围之外,需要 4 字节存储!

四、你的论坛的"聪明"做法
为什么论坛要把 emoji 转成 HTML 实体?

用户输入:😄
    ↓
检测到不是 GBK 字符
    ↓
转成 HTML 实体:😄
    ↓
存入数据库(GBK 支持这些数字字符)
    ↓
页面显示:浏览器解析为 😄

这样做的好处:
优点    说明
兼容    老系统也能用 emoji
简单    不需要改数据库
安全    避免特殊字符问题

缺点    说明
存储大    每个 emoji 变十几个字符
搜索难    搜不
下一页 (1/2)
回帖(1):
1楼:“说来说去,好像emoji也没什么特别的嘛,就像是表情一样的,哈哈”(引& ..(zhangjingyu)

全部回帖(1)» | 最新回帖
收藏本主题 | 发表新主题