项目场景:
最近再写一个微信小程序涉及到获取用户的昵称等信息,起初的时候一切进展顺利,但测试的时候发现一个问题,我们的一位同学始终不能正常授权信息,查询数据库也没有相关的信息。刚开始认为是手机问题或者是代码问题。排查了半天问题还是没有解决。当出现问题的同学给我发测试截图的时候我发现了问题。
问题描述:
这张图看似没有任何问题,用户信息正常获取打印了,但仔细看你会发现,不对呀,它的昵称有一个表情,会不会是这个表情导致的呀。赶紧一波百度,还真是,我的数据库在存这个表情的时候报错,自然是存不进去的。百度找到了两种解决办法。
原因分析:
- 方法一:改变数据库的编码方式和表的编码方式,据说的改成utf8mb4,我照做了,但是效果貌似并不好,甚至没有任何变化。
- 方法二:数据存储前进行编码,取出后再反编码,我这里是这样做的。这里用这种方法的时候我的数据库编码格式还是上面那样,没有影响
解决方案:
nickName.encode("unicode_escape") # 编码
编码后的数据:b'Mr. Ke\U0001f506'
results[1].encode().decode("unicode_escape").replace('b', '').replace("'", ''),
解码后的数据:Mr.Ke(表情)
author: KK
time :2021年10月21日14:49:47
flag:8/30