emoji编码困惑,官方貌似自己实现了一套emoji编码

发布于 7 年前作者 czeng18319 次浏览最后编辑 7 年前来自 ask

授权使用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 回复
yan82
yan821 楼6 年前

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

xiulanyang
xiulanyang2 楼6 年前

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

weihao
weihao3 楼6 年前

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

gxiong
gxiong4 楼6 年前

马克

zhaofang
zhaofang5 楼6 年前

占位

oyin
oyin6 楼6 年前

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

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

不知道到底是怎么了呢

qhan
qhan7 楼6 年前

自己顶