使用 PHP 把搜狗输入法输入的 EMOJI 表情转换为 Unified 编码的一个方法

2015-10-15 15:11:28 +08:00
 qiayue
搜狗输入法中选择笑脸表情后,提交到后端, json_encode 得到 \ud83d\ude04 。
如何把 d83dde04 转成标准 emoji 表情代码困扰了我好久,找了好多文章,终于让我找到解决方案了,也许其他人也有需要,所以在这里记录下来。

关键性参考文章: http://www.bubuko.com/infodetail-1022211.html

里边推导了一个公式,可以把 0xd83d0xde04 转成 1f604 ,而 U+1F604 就是 Unified 编码的笑脸表情代码。
文中是 js 的函数,我提取出来了关键几行代码,转成 PHP 代码如下:

$h = 0xd83d; //高位
$l = 0xde04; //低位
$code = ($h - 0xD800) * 0x400 + 0x10000 + $l - 0xDC00; // 转换算法
echo "U+" . strtoupper(dechex($code));
//echo 结果是 U+1F604

另外不同编码方式的转换,参考 http://code.iamcal.com/php/emoji/
另一些参考网页
http://computerism.ru/emoji-smiles.htm
https://github.com/mc-zone/emoji-code
8664 次点击
所在节点    PHP
8 条回复
xfspace
2015-10-15 15:19:20 +08:00
PHP 必须是世界上最好的语言!
qiayue
2015-10-15 15:27:23 +08:00
不仅仅是搜狗输入法, iOS 输入法也是一样
Moker
2015-10-15 15:49:22 +08:00
收藏下 最近做的东西可能会用到
qiayue
2015-10-15 18:58:24 +08:00
@Livid 突然想到,要是收藏也能使帖子回到首页(俗称被顶起来)就好了
比如说每收到 5 个收藏就相当于一次评论顶贴

因为目前的设定,很多人收藏,但是没人回复的帖子就再也没机会被顶起了
deadEgg
2015-10-15 20:32:39 +08:00
qiayue
2015-10-15 20:51:11 +08:00
@deadEgg 我主贴倒数第三个链接就是你发的这个
cdffh
2015-10-16 16:24:17 +08:00
emoji 有两个大坑
1,存储到数据库要使用 utf8-mb4 才行
2,导出 excel 的时候会把 phpexcel 搞崩.
comver
2015-10-22 14:34:17 +08:00
谢。
mark.参考。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/228273

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX