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...