zhangjingyu
“说来说去,好像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 的开发者来说,你今天已经学会了它背后的小秘密!💪😊

