我只是从Windows Phone迁移到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导出期间发生的错误还是某种形式的压缩来减小文件大小?如果是这样,是否有解码算法将“压缩”版本转换为正常版本?
答案 0 :(得分:1)
WhatsApp似乎在Unicode的私人使用区域中使用了表情符号的Softbank编码,该版本在iOS版本2-4中使用,然后才在他们自己的Unicode块中标准化。例如:
0xEE
0x84
0x8C
是U+E10C
U+E10C
是一个私人使用角色,软银/ Apple用于编码后来被标准化为U+1F47D
()的内容。没有这些映射的正式列表,也不可能进行算法转换(必须构建映射表)。但是,您可以轻松找到compilations of the Softbank/Unicode mappings以在它们之间构建转换器。