前言

近期开发微信项目,其中消息转发部分遇到了个问题。

当被转发的消息包含emoji表情时,在utf8转unicode的过程中因为编码不支持emoji字符,导致emoji表情变成了乱码(?)。

折腾半天,emoji是没办法转ansi了,但是可以通过字典的方式转成其他可解析字符来实现无损转换。

解决方案

遍历emoji码表进行替换成可解析字符,如“🌞”替换成“:sun:”。

字典可以从以下project获取。

以下是emoji在各语言中转码的project:

点击查看

由于我用的是某不起眼语言,所以我通过python生成一个字典用于转码。

Ojo-Laptop:~ hsojo$ pip3 install emoji
from emoji.unicode_codes import EMOJI_ALIAS_UNICODE

content = ''
for k,v in EMOJI_ALIAS_UNICODE.items():
    if content != '':
        content += '\n'

    content += '%s|%s' % (k, v)

with open('emoji.txt', 'w') as io:
    io.write(content)

这样只要用其他语言加载好字典,然后进行替换即可。