前言

使用微信授权进行系统登录,授权登录成功后,将微信与系统账号进行绑定,在个人中心需要显示出绑定微信的昵称、头像等信息。但在联调中发现,当昵称中出现中文、特殊字符以及emoji表情的时候,会出现乱码的问题。在网上查阅了许久的教程,要么答非所问,要么不够完整有所缺失,通过反复尝试验证,终于完美解决,故把自己解决方案分享给大家。

踩坑点说明

1、微信userinfo接口返回的用户信息编码格式并不是UTF-8,而是ISO-8859-1,这点在微信开放平台上并没有明确的说明,巨坑!!!

2、不同的数据库对于emoji的支持方式可能会不一致,比如mysql可设置数据库编码方式为utf8mb4,sql server可设置字段类型为nvarchar等。

前置条件

项目使用的sql server,需要先将保存用户昵称的字段类型设置为nvarchar,因为varchar并不支持Unicode编码格式的数据。

保存数据

// 调用微信接口获取用户信息

String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid + "&lang=zh_CN";

// 得到微信响应结果

String result = restTemplate.getForObject(url, String.class);

// 将微信返回字符串进行ISO-8859-1解码,并编码为UTF-8类型

result = new String(result.getBytes("ISO-8859-1"), "UTF-8");

// 使用fastjson将结果转化为json对象

JSONObject jsonObject = JSON.parseObject(result);

// 将昵称进行UrlEncoder编码

String nickName = URLEncoder.encode(jsonObject.getString("nickname"),"UTF-8");

// 将昵称存入数据库即可

....

取出数据

URLDecoder.decode(nickName, "UTF-8")

android 符号表情显示乱码,微信昵称含中文、特殊字符、emoji表情乱码的后台解决方案...相关推荐

  1. 微信昵称乱码 mysql_微信网页开发获取用户昵称乱码 微信昵称包含emoji表情乱码的解决方案...

    微信网页开发获取用户昵称乱码 微信昵称包含emoji表情乱码的解决方案如下: 问题产生原因:由于数据库及属性一致设为utf8,而utf8只支持1-3个字节.当用户昵称为emoji表情时,获取用户基本信 ...

  2. 解决阿里云RDS mysql5.7数据库不能存储微信昵称含特殊表情或字符的问题

    解决阿里云RDS mysql5.7数据库不能存储微信昵称含特殊表情或字符的问题 1.数据库和表的字符集类型设置为utf8mb4: 2.字段字符集设置为utf8mb4. 3.进入阿里云数据库实例管理页面 ...

  3. android 头像简称,Android环信显示头像及昵称的简单方法

    在我们日常应用开发中,很多时候产品需要IM聊天功能.考虑到时间.难度等问题一般会选择集成一些比较稳定的第三方SDK来实现功能.最近的项目也有IM需求,因为之前用过环信,感觉还不错,所以就再次使用了环信 ...

  4. 微信小程序中使用emoji表情相关说明

    本帖将聚合一些跟emoji表情有关的知识:前端传过来的昵称和备注信息一定要经过严格的正则表达式过滤,放置出现XSS等攻击,另外emoji字体表情库应该使用base64_encode编码,拿信息的时候b ...

  5. php转换emoji表情为图片输出小程序,微信小程序中使用emoji表情相关说明

    本帖将聚合一些跟emoji表情有关的知识:相关文章:"i爱记账" 小程序后端开发小结 第7条经验前端传过来的昵称和备注信息一定要经过严格的正则表达式过滤,放置出现XSS等攻击,另外 ...

  6. 截取含有中文、Emoji表情、特殊符号的字符串

    在码代码时经常会遇到截取字符串的问题,有时候字符串会包含中文.Emoji表情.以及一些特殊符号,这时使用String的substring()进行截取操作,结果就有可能是乱码或者不符合要求.这是因为JV ...

  7. 微信公众号开发 - 发送Emoji表情

    微信公众号开发文章目录 1.微信公众号开发 - 环境搭建 2.微信公众号开发 - 配置表设计以及接入公众号接口开发 3.微信公众号开发 - token获取(保证同一时间段内只请求一次) 4.微信公众号 ...

  8. 如何截取包含中文、Emoji表情的字符串

    如何截取包含中文.Emoji表情的字符串 在码代码时经常会遇到截取字符串的问题,有时候字符串会包含中文.Emoji表情.以及一些特殊符号,这时使用String的substring()进行截取操作,结果 ...

  9. 微信昵称含表情入库报错

    项目场景: 后台获取微信服务号的所有粉丝信息,涉及到昵称.地区.关注时间.openid.unionid[只有绑定开放平台才有] 问题描述: 后台点击获取粉丝数据,访问微信接口时会报错,nickname ...

  10. 解决微信昵称含特殊表情或字符无法存入数据库异常

    场景描述: 保存微信用户昵称,发现昵称中包含特殊表情或字符,导致以下异常 Caused by: java.sql.SQLException: Incorrect string value: '\xF0 ...

最新文章

  1. python两道简单的面试题
  2. Tomcat服务器的常用配置
  3. 手把手教你发布自己的CocoaPods开源库
  4. linux虚拟网络设备之,Linux虚拟网络设备
  5. C++11:右值引用和转移赋值
  6. 求职,北京,.netGIS
  7. 我爱计算机视觉干货集锦分类汇总(2019年5月7日)
  8. 由SGA组件内存移动导致前台业务超时问题处理过程
  9. 什么是在Vim中评论/取消注释行的快速方法?
  10. 常用的测试用例设计方法有那些?看这一篇就够了
  11. CSR8系列ROM版本芯片介绍
  12. 英国研制出新型机器人具有10种人类表情(组图)
  13. 【微信篇】取证遇到微信昵称、微信号、微信账号、微信ID一次性区分清楚
  14. c语言方波生成程序,关于C#:在软件上生成方波以进行模拟输入/输出
  15. 论文阅读笔记《Principal characteristic networks for few-shot learning》
  16. 项目2-Time类中的运算符重载
  17. scala的两种变量类型 var 和 val
  18. golang中获取字符串长度的办法
  19. ctr 平滑_CTR平滑方法
  20. “金链熊“已致200多家机构受害,或为年度最严重APT攻击事件

热门文章

  1. 台大林轩田机器学习课程笔记2----机器学习的分类
  2. lightoj 1224(trie)
  3. 纯 html 以及 js 多域名跳转
  4. mac 文档 只读修改
  5. ubuntu打开只读文件并修改
  6. BZOJ-USACO被虐记
  7. 股市一跌再跌,是在提醒我们什么?
  8. javascript-异步之Promise then和catch
  9. 规格型号、购方名称、地址备注等格式有误、特殊字符-无法开票?
  10. android rom打包解包工具,Android刷机包解包打包