2:转化成UTF-8为: F0 9F 90 99
3: 发现在Java的JVM中是用UTF-16存储表示的,也就是u+1F419转化为UTF-16(四个字节表示)为: D8 3D CC 19
此时大象的表情由下层已经传到上层JVM中了,并且保存了,关键在于又要传下去,此时把大象的表情传下去又要转化成 UTF-8,而这个时候大象的表情的Unicode编码为D8 3D CC 19(JVM刚才存储保存的
关于JVM这个,可能说错
),传下去意思就是转换成UTF-8,根据相关映射关系,结果为: ED A0 BD ED B0 99
(PS:我就说在项目开发中,为什么手机热点为大象时,相关代码打印出来的16进制表示为 xEDxA0xBDxEdxB0x99 查了一下该表情编码为 U+1F419
)
步骤1转化成步骤2过程:
1F419 二进制为:1 1111 0100 0001 1001通过下图的映射关系
因为 1F419 处于 0001 0000-0010 FFFF这个范围 (第四行)所以将 1 1111 0100 0001 1001补进x号中,注意是从右往左补,结果为:
11110xxx 10x11111 10010000 10011001 然后是x用0来补,最终结果为 11110000 10011111 10010000 10011001 ,对应的表示结果(16进制)为 F0 9F 90 99 正式的表示方法为 \xF0\x9F\x90\x99\
步骤1转化成步骤3:
Unicode使用UTF-16编码原理:
图片里面的U 指的就是 1F419,因为1F419 >0x10000, 我们先计算 U’= U-10000(此为16进制表示格式哦,换成二进制为 0001 0000 0000 0000 ),U' = 1F419-10000=F419 ,然后将U'写成二进制形式(从右往左写,左边空着的补0) :0000(yyyy) 1111(yyyy) 0100(yyxx) 0001(xxxx) 1001(xxxx)。所以 U 的UTF-16编码(二进制)就是:
1101100000111101 1101110000011001(用16进制表示为: D83D CC19,注:用四个字节表示的,前面两个一块,后面两个一块的
(这是我有疑惑的地方)
)此时在上层就是这样保存该表情的,
然后又要下发给底层,相当于是 大象的表情此时的Unicode二进制编码为 1101100000111101 1101110000011001,使用Unicode转化成UTF-8的映射图表如下图(和上面一样一样滴)
属于00000800 - 0000FFFF(第三行)范围(用16进制表示为: D83D CC19,注:用四个字节表示的,前面两个一块,后面两个一块的(这是本片文章我有疑惑的地方))D83D转化成UTF-8字节流(二进制)结果为: 11101101 10100000 10111101 ;CC19转化成UTF-8字节流(二进制)结果为:11101101 10110000 10011001,合起来结果就是11101101 10100000 10111101 11101101 10110000 10011001,对应的16进制为:ED A0 BD ED B0 99 ,正式的写法为:\xED\xA0\xBD\xED\xB0\x99\.终于我知道了相关日志打印出来的wifi名称是大象的表情的编码为 \xED\xA0\xBD\xED\xB0\x99\
感谢这位博主的文章,谢啦。http://blog.csdn.net/u200814499/article/details/53420263
emoji
的Unicode类型非常多,难以一条规则通吃,弄了半天,暂时就说结论:
findSurrogatePair('3420e3') // 4️⃣
function findSurrogatePair (point) {
let pointX
16
= parseInt(point,
16
)
if (pointX
16
<= 0xffff) {
return...
charCodeAt codePointAt(
UTF
-
16
码元)获取unicode 码值,String.fromCharCode() String.fromCodePoint() (
UTF
-
16
码元)转换unicode码值。
UTF-8
编码
长度是可变,
UTF
-
16
编码
长度是可变,
UTF
-32
编码
,字节序分为 大端表示(big endian) 和 小端表示(little endian)。
emoji
就是
表情
符号;词义来自日语(えもじ,e-moji,moji在日语
中
的含义是字符)
表情
符号现已普遍应用于手机短信和网络聊天软件。
emoji
表情
符号,在外国的手机短信里面已经是很流行使用的一种
表情
。
手机上如何使用
emoji
:
1.iphone、ipad系统:安装
emoji
free,再设置-
- (NSString *)
emoji
Encode{
NSString *uniStr = [NSString stringWith
UTF8
String:[self
UTF8
String]];
NSData *uniData = [uniStr dataUsingEncoding:NSNonLossyASCIIStringEn...
代码的思路极其简单,这种形式的“文字”可以理解为一张黑白图片,图
中
的白色使用一种
emoji
表情
代替,黑色使用另一种
emoji
代替。那么想要生成这种“文字”,则我们只需要两步即可,第一步是根据输入文字得到一张图,第二步则是遍历这张图片,当前像素的颜色为黑色时我们输出????????
表情
,为白色时输出✨b
表情
。在网上简单搜索了一下,PIL
中
的
时下越来越多的文字包含
表情
,处理文本时,经常需要将
表情
(
emoji
)转换为文字(
中
文或英文);或者将文字转换为
emoji
。最近笔者调研了网上已有的工具包,发现已有一些开源的
java
或python包,但是这些包支持的
emoji
种类较少或者只限英文。鉴于此,笔者开源了一个较为全面的
emoji
转换python包:...
我们平常在微信等平台上聊天时,一般都会发一些
表情
来替代文字,这些从广义来说都可以成为
Emoji
表情
,都是用图片
表情
来表达文字信息,增加了表达方式,契合年轻化人的性格。正因此才大受欢迎。如果从严谨来看,只有手机系统内置的
表情
才算
emoji
表情
,因为这些
表情
是以字体
编码
的方式规范到unicode
编码
集里面的。
什么是字体
编码
计算机存储都是以二进制的形式的,也就是说所有的文字都是以以二进制的数字存储的。简单来说我们需要一个文字和数字的转换字典,用以存储和显示文字,比如英文
中
的A存储在二进制的数字是65。那么他应
之前对
emoji
没怎么关注过,只有大约印象和
编码
有关,今天花了一点时间去看了一下
emoji
如何
编码
的。 先贴个知乎回答-Unicode 和
UTF-8
有什么区别? - 邱昊宇的回答 - 知乎 里面涉及两个概念:字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
编码
规则:将「码位」转换为字节序列的规则(
编码
/解码 可以理解为 加密/解密 的过程)unic...
好久没有写博客了,当然这个锅得甩给忙碌的工作
最近工作
中
又一次碰到了关于
emoji
表情
的问题:需求要求将用户输入的一段内容,截取8个长度作为标题。app端简单的对内容substr了一下。
然而当在一些特殊情况下,就会出现截取后最后一位乱码的情况。比如内容为:“明天要发奖金啦”,按预期截取后应该是:“明天要发奖金啦”;而实际上截取的结果是:“明天要发奖金啦?”,最后一位是个乱码,看来奖金发不成了
MySQL数据库
编码
为
utf8
时,保存
emoji
表情
失败,异常信息:
java
.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\x94’ for column ‘content’ at row 1
查看数据库字符集信息,如下
mysql> SHOW VARIABLES WHERE Variable_na...