• 129阅读
  • 1回复

关于emoji [复制链接] [手机版]

上一主题 下一主题
在线zhangjingyu

只看楼主 倒序阅读 使用道具 绿 楼主  发表于: 2026-08-09 16:42:19 星期日
关键词: 女性论坛搜索
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 变十几个字符
搜索难    搜不到真正的 emoji
处理烦    每次都要转换

五、总结
emoji 就是:
1. ✅ 是文字(Unicode 字符)
2. ✅ 是图形(设备渲染成图片)
3. ✅ 是标准(有统一的 Unicode 编码)
4. ❌ 但不是所有系统都支持(需要 UTF-8mb4)

用一句通俗的话:
emoji = 被 Unicode 收录的、需要 4 字节存储的、设备自己画出来的文字! 😄

最终建议:
既然你的论坛用 HTML 实体方式能正常显示 emoji,那就继续用吧!虽然绕了点,但稳定就行!👍

技术方案没有最好,只有最合适! 😊
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
在线zhangjingyu

只看该作者 沙发  发表于: 2026-08-09 16:49:12 星期日  点亮(0)
说来说去,好像emoji也没什么特别的嘛,就像是表情一样的,哈哈
哈哈,你说得对!😄 从用户角度看,emoji 确实就是表情而已!

用户角度 vs 程序员角度
👤 用户(你):
看到:😄🎉❤️🔥
感觉:就是个表情嘛!跟输入法里的表情一样!

👨‍💻 程序员(我):
看到:F0 9F 98 84  E2 9C 94  F0 9F 94 A5
感觉:
  - 占4个字节!(普通中文才3个)
  - 数据库要 utf8mb4!(utf8 存不了)
  - 要检查编码!(不然乱码)
  - 要处理肤色!(👋🏻👋🏼👋🏽)
  - 要处理组合!(👨‍👩‍👧‍👦)
  - 要处理 ZWJ 连接符!
  - 要处理变体选择器!
  - 不同系统显示不一样!

类比理解
用户看 emoji:
就像看到一盒彩色铅笔
红色就是红色,蓝色就是蓝色
简单!

程序员看 emoji:
就像看到这盒彩色铅笔的生产过程:
1. 要采石场(Unicode 标准)
2. 要加工厂(字符编码)
3. 要调色配方(渲染引擎)
4. 要质检(兼容性测试)
5. 要运输(数据传输)
6. 要上架(显示)

经典程序员 vs 用户对话
用户: "这个 emoji 挺好看的!"
程序员: "这个 emoji 用了 4 个字节,需要 MySQL 5.5+,字符集要 utf8mb4,还要检查 ZWJ 连接符,在不同设备上渲染效果可能不一样,还要考虑回退方案..."
用户: "呃...我就是说它好看..." 😅

名言总结
"对用户来说,技术细节都是透明的;对程序员来说,每个细节都是坑。"

最后的最后
你说得对,emoji 就是表情! 🎉

用户用得开心就好

程序员只是为了让用户用得开心,所以要想那么多 😄

所以:当用户看到 😄,程序员的心里是:
😄 背后是:
- 4 个字节的 UTF-8 编码
- 数据库支持
- 编码转换
- 浏览器渲染
- 字体支持
- 操作系统兼容
...
但从用户角度看: "哈哈,这个表情真好玩!" 😄

所以,你说得完全正确!emoji 就是表情,没什么特别的! (对用户来说)😂

但对你这个正在学习 PHP 的开发者来说,你今天已经学会了它背后的小秘密!💪😊
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!