注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

phperwuhan的博客

记载一个phper的历程!phperwuhan.blog.163.com

 
 
 

日志

 
 

包含emoji表情符号的微信昵称入库失败解决方案  

2015-05-13 15:16:02|  分类: 微信 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
来源:http://m.blog.csdn.net/blog/everything_is_ok/42454451

最近在微信公众号做一个名酒投票的功能,有一个需求点是投票完后,可以看到每个酒的最近投票用户的头像和昵称,我的想法是在点击投票的时候,直接获 取投票微信用户的openid,用openid调用微信接口获取微信用户昵称和头像url,将这两个字段直接入到我们自己的数据库表里。

问题来了。。。有的非主流童鞋微信昵称里有一些表情符号大笑羡慕类似这些之类的,得到微信用户信息后,在将用户昵称和头像url入库的时候报错如下:


插入数据时候报了错:### Error updating database.  Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for column 'bak2' at row 1

这是因为:移动端的emoji表情符号是4个字节,而mysql的utf8编码最多3个字节,所以插入不进去

解决方法:

1:让用户都主流些,去掉那些乱七八糟的表情。。。不大可能

2:过滤掉非主流字符。。。不太人性化

3:将mysql的编码从utf8转换成utf8mb4,可以从根本上解决问题,具体如何转换参考如下文章:

http://www.it165.net/database/html/201405/6581.html

http://www.it165.net/database/html/201408/7544.html

http://www.it165.net/database/html/201408/7550.html

http://www.w2bc.com/Article/8533

4:我的解决方法:由于数据库已经建好了,有了大量正式数据,安全起见,我是通过转码的方式解决的,入库前encode一下,出库前decode一下。虽然略显繁琐,但是问题也能解决。

通过这件事,给我的启示:在移动互联网迅速发展的今天,为了避免emoji表情入库失败问题,涉及移动相关的数据库在建表之前建议都采用utf8mb4字符集。

  评论这张
 
阅读(277)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017