emoji编码困惑,官方貌似自己实现了一套emoji编码
发布于 6 年前 作者 czeng 18103 次浏览 来自 问答

授权使用post,“application/x-www-form-urlencoded;“, 传数据后台获取到的昵称,部分正常,部分乱码,找不出来解决办法,部分用户昵称会出现“这个字符(大部分情况集中在vivo,oppo,mi手机上)

服务器打印出来有问题的字符串,例如

,其中“%EE%90%99”是客户端发送过来的encodeURIComponent(用户昵称)

我选择复制

这个到微信pc客户端,能正常显示“👀”,也就是微信pc客户端能将“EE 90 99”解析成“👀”,但是这个utf-8编码的emoji实际是“f0 9f 91 80”,

所以为什么原本encodeURIComponent(👀) == “%f0%9f%91%80”, 而客户端传回的是“%EE%90%99”,

是否微信客户端默认做了一套emoji编码集,来处理一些兼容情况,如果是的话,能否把这个告知开发者

7 回复

数据表存储 emoji 用 utf8mb4 比较合适,“application/x-www-form-urlencoded;“  不行就换 multipart/form-data 试试

你好,目前 Android 小程序上确实是只显示 Android 支持的 Emoji,微信表情只显示字符

不要直接使用 post 过来的用户信息,请使用 rawData 进行解密,然后做存储,这样就不会出现头像中的 emoji 表情被编码的问题了,而且从安全角度来说,也不建议直接使用 post 中的用户信息字段,因为这种用户信息可能会被伪造

同有问题 用的wafer小程序解决方案 emoji完全读不出来 没有办法post到MySQL上(已经设置过各种utf8mb4)。。。解码解得挺奇怪的 而且每次报错都说

ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: ‘\xF0\x9F\x90\x9F’ for column ‘nickName’ at row 1

不知道到底是怎么了呢

回到顶部