公众号回复表情 和 关于字符集和字符编码

这个问题的本质是,APP内用的UTF8编码方式,所以我们发送过去显示的内容也要是UTF8编码才能被APP显示出来。

emoji编码 emoji代码查询emoji编码 emoji代码查询


emoji编码 emoji代码查询


每个emoji表情都有一个与之对应的Unicode编码(例如:ue415,其中u表示十六进制,e415是笑脸emoji表情在Unicode字符集中的编码),我们可以从百度轻易查到每个表情对应的Unicode编码,然后从Unicode编码转成UTF8编码,再返回给前端(微信),这时候就能显示emoji表情了。

php 没有提供Unicode直接转UTF8的方法,可以使用 json_decode 来间接转换。

mysql 的字段可以选择utf8编码方式,但是mysql中该编码方式只支持3个字节,而emoji表情在Unicode里面排名比较后,需要4个字节才能保存一个emoji表情,所以在建表的时候如果需要考虑保存表情,应该设置字段字符集为 utf8mb4 , utf8mb4表示用utf8编码方式同时mysql分配4个字节的存储空间 。

先讲概念: 字符集是字符和二进制码的对应关系,字符编码是规定字符怎么存储到内存中。

比较常见的两种字符集是 ASCII 和 Unicode 。

ASCII比较简单,内含128个字符,128=2 7 ,即使用 7 bit 的存储空间就能表示ASCII中的一个字符。但是考虑计算机一般使用 1 byte 作为基本单位,所以一般使用 1 byte 来表示ASCII中的一个字符。虽然浪费了 1 bit,但是读写效率更高了,利用 空间来换效率 。

例如:

'A'在ASCII中用065(十进制)或者0x41(十六进制)来表示,转换成二进制就是:1000001,二进制占用了 7bit。

Unicode包含上百万的字符,要表示上百万的字符使用的字节数肯定随之增加,所以Unicode的复杂度远远增大。虽然Unicode字符集中包含的字符很多,但是字符的对应关系还是从小的0开始排列。排列在前面的字符使用 1byte 就可以表示,位置靠后的可能需要 3byte 才能表示。这就关系到怎么分配字节数来存储的问题。

如一个字符串包含 1个位置靠前字符、1个位置靠后字符,即可能个字符用 1byte ,第二个字符用 3byte,这个字符串拼接在一起后一共使用 4byte。这看上去没有问题,但是系统在拿这个字符串的时候,怎么知道这 4byte 是怎么分配的(1+3=4,2+2=4,3+1=4)。这就涉及到下面说道的字符编码的问题,字符编码方式决定怎么去存储这些内容。

UTF-8、UTF-16、UTF-32指的就是字符编码,即表示用什么方式去表示(存储)字符集中的二进制。

UTF-8 的编码规则很简单:如果只有一个字节,那么的比特位为 0;如果有多个字节,那么个字节从位开始,连续有几个比特位的值为 1,就使用几个字节编码,剩下的字节均以 10 开头。

UTF-32 是固定长度的编码,始终占用 4 个字节,足以容纳所有的 Unicode 字符,所以直接存储 Unicode 编号即可,不需要任何编码转换。浪费了空间,提高了效率。

中英文字符、emoji表情

12x12的像素表情符号

Unicode 收录emoji编码,从此,Emoji表情就是一个文字,不过会被渲染成图形而已

utf-8下,emoji占用4个字节、1个字符

Unicode 只是规定了 Emoji 的码点和含义,但具体的实现与展示则依赖于其展示的系统,如果系统无法识别该Emoji表情,则无常显示,会显示一个空方框之类

同时,不同的系统,展示的方式同样有区别,同一个Emoji表情,在不同的系统上的展示可能不同。

emoji表情与其他字符的区分一直是个难点,如果想要知道一个字符串中有多少个Emoji表情,或者去除字符串中的Emoji表情等,都需要对Emoji表情进行识别。

一般而言,Emoji表情的识别有两种方案。

通过这两个方法可识别/过滤中文、字母、emoji;应用如下:

emoji意思对照表2022

emoji:绘文字(日语:絵文字/えもじemoji)是日本在通信中所使用的视觉情感符号,绘指图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。在大陆,emoji通常叫做“小黄脸”,或者直称emoji。

在NTTDoCoMo的i-mode系统电话系统中,绘文字的尺寸是12x12 像素,在传送时,一个图形有2个字节。Unicode编码为E63E到E757,而在Shift-JIS编码则是从F89F到F9FC。基本的绘文字共有176个符号,在C-HTML4.0的编程语言中,则另增添了76个情感符号。

早由栗田穰崇(Shigetaka Kurita)创作,并在日本网络及手机用户中流行。自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。

emoji的起源:

栗田穰崇手中拥有终设计以后,他原以为此前拒绝他的那些厂商将可做一些润色的工作,将Emoji表情符号变成更加专业的东西。

这样做的好处是,所有人的Emoji符号都是相同的。如果每家厂商都在这些字符中加入自己的创意,那么Emoji本来将会变成“大杂烩”一样的东西,各个厂商之间都不一致,甚至在NTT内部也是如此。

其结果是,原本可以统一化的字符变成了各种自主开发表情的“大杂烩”,导致从一家经销的手机发送至竞争对手经销手机上的Emoji表情无法显示。直到2005年,这三大才开始将来自竞争对手的输入信号加入到自己的字符中。

苹果自拟表情为什么收到的是乱码

近遇到苹果手机自带的emoji表情的处理问题,由于我们的数据库编码是GBK编码,而苹果的键盘自带的emoji表情,苹果系统的编码格式是UTF8编码,所以在把emoji表情存到GBK编码的数据库的就会出现乱码的现象。

解决方法:

1.把IPhone自带的表情符号加到你标题和邮件正文的任何位置,对方收到到的就已经不再是乱码了。

2.表情符号IPhone本身就自带有的,有一点要注意,一定要在标题和正文都带有表情符号,如果标题没有,则标题会乱码!正文的则可以设置在签名里面!

3.关于其原理是字体编码问题,而且,UTF-8这个编码是Win和Mac可以美丽兼容的。还有一个重点就是:只要在邮件里有这种符号,邮件编码格式就会全部强制被改成UTF-8。回复或者转发,对方看到的都是正常的了。