600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 微信昵称乱码 mysql_微信登录昵称中文乱码 Emoji表情乱码问题总结

微信昵称乱码 mysql_微信登录昵称中文乱码 Emoji表情乱码问题总结

时间:2023-10-23 13:01:59

相关推荐

微信昵称乱码 mysql_微信登录昵称中文乱码  Emoji表情乱码问题总结

APP中使用微信登录,流程一般是APP通过微信SDK请求code,然后APP使用code请求自己的服务器,服务器根据code获取access token,然后根据token和openid获取用户信息。在最后一步获取用户信息时经常出现中文乱码问题,这里记录下解决方案。

获取用户信息中文乱码

这里的乱码主要是昵称,有时候也有国家和省份城市信息乱码,如果里面包含了中文,解决方法是: 解析API请求结果之前设置encoding

,这里以python为例:

import requests

req = requests.get('https://api./sns/userinfo', params={

'access_token': access_token,

'openid': openid,

'lang': 'zh_CN',

})

req.encoding = 'utf-8' # 解决微信用户名乱码问题

print(req.json())

网上有些地方也说需要将请求参数 lang 设置为“en”,或者设置headers中的Language为“en”;自己试了下其实不设置也OK,相反设置了之后返回的用户信息就是英文形式的,不便于我们解析和处理。

Emoji表情昵称乱码

微信昵称中可以包含Emoji表情,为了能够正常存储用户信息,我们需要在数据库层面设置数据库字符集解决这个问题,这里以MySQL数据为例。

通过上面的方式,我们已经可以正常解析Emoji表情,但是由于数据库字符集不支持,存储时会报错,为了能够存储Emoji表情,我们需要将数据库字符集设置为utf8mb4。具体操作如下:

1. 修改MySQL配置

# 打开配置文件

sudo vim /etc/mysql/mysql.conf.d/f

# 增加以下内容

[client]

default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

# 重启MySQL

sudo service mysql restart

2. 修改数据库,表的字符集

ALTER database DB_NAME default character set = utf8mb4;

ALTER table TABLE_NAME default character set = utf8mb4;

ALTER table TABLE_NAME convert to character set utf8mb4;

这样设置之后就可以正常存储Emoji表情啦~~

Over!

注意:本文来自降龙。本站无法对本文内容的真实性、完整性、及时性、原创性提供任何保证,请您自行验证核实并承担相关的风险与后果!

遵循[CC BY-SA 4.0]分享并保持客观立场,本站不承担此类作品侵权行为的直接责任及连带责任。您有版权、意见、投诉等问题,请通过[eMail]联系我们处理,如需商业授权请联系原作者/原网站。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。