我刚从Windows迁移到Android,我发现我无法迁移我的WhatsApp聊天历史(至少不容易)。现在,我想使用导出到邮件功能的WhatsApp提供。它运行得很好,但是(主要)对于旧消息,一些表情符号没有被正确地传递。
查看UTF-8字节表示,似乎这些没有显示的表情符号只由三个字节组成,而不是四个普通字节。
示例:
08.09.2013 20:00:10: Name: 被导出,而不是
08.09.2013 20:00:10: Name: 查看表情符号的十六进制表示(仅):
0 1 2 3 4 5 6 7 8 ... Dump
ee 81 9a ee 84 8c ee 84 9c î.šî„Œî„œ而不是
0 1 2 3 4 5 6 7 8 9 a b ... Dump
f0 9f 92 a9 f0 9f 91 bd f0 9f 92 80 💩👽💀因此,我的问题是:这只是在WhatsApp导出过程中发生的错误,还是某种形式的压缩以减少文件大小?如果是,是否有将“压缩”版本转换为正常版本的解码算法?
发布于 2016-03-25 12:42:54
WhatsApp似乎正在使用Unicode专用区域中的表情符号的软银编码,这是在iOS版本2-4之前在他们自己的Unicode块中标准化之前使用的。例如:
0xEE 0x84 0x8C是U+E10C的UTF-8编码。U+E10C是软银/苹果公司用来对后来标准化的U+1F47D ()进行编码的专用字符。没有这些映射的正式列表,算法转换也是不可能的(必须构建映射表)。但是,您可以很容易地找到Softbank/Unicode映射的编译来在它们之间构建一个转换器。
https://stackoverflow.com/questions/36219878
复制相似问题