1.最近在做一个基于微信公众号开发的微店商城项目,本人是java后台。需要存储从公众号进入我们商城的用户的微信昵称,由于Android和ios系统中存在emoji这种特殊字符,导致我从微信接口中获取到的微信昵称中如果含有emoji字符,插入数据库就会报错(mysql数据库)。
2.报错信息:Incorrectstringvalue:'xF0x9FxA4x973...'forcolumn'nick_name'atrow1
3.百度了解知道:emoji表情符采用Unicode6标准,采用4个byte字节存储一个emoji表情符,而我们的mysql数据库采用UTF-8编码格式时,采用3个byte字节存储一个字符,这样插入数据库就会报错。好在mysql5.5.3之后新增了一个utf8mb4字符集,专门用来兼容4字节的Unicode字符。
解决办法:一、如果非得存储emoji表情。mysql5.5.3以下的升级数据库,本来就是5.5以上的直接修改字符集和排序规则,注意一定要同时把排序规则也一起修改了。1.修改数据的字符集和排序规则,如下图:2.修改表中该字段的字符集和排序规则3.重启数据库,再次插入就不会报错。emoji在数据库中还是无法正常显示。二、直接将emoji表情过滤,我还是觉得这种办法方便,毕竟重装数据库对业务有很大的影响,特别是该数据库中有别的线上项目的数据时根本不允许重装。/***@Title:emoji特殊处理*@author:yanbing*@date:2017-12-0510:15*/publicclassEmojiStringUtils{/***@Title:判断是否存在特殊字符串*@param*@author:yanbing*@date:2017-12-0510:14*/publicstaticbooleanhasEmoji(Stringcontent){PatternpatternPattern.compile("[ud83cudc00-ud83cudfff]|[ud83dudc00-ud83dudfff]|[u2600-u27ff]");Matchermatcherpattern.matcher(content);if(matcher.find()){returntrue;}returnfalse;}/***@Title:替换字符串中的emoji字符*@param*@author:yanbing*@date:2017-12-0510:17*/publicstaticStringreplaceEmoji(Stringstr){if(!hasEmoji(str)){returnstr;}else{strstr.replaceAll("[ud83cudc00-ud83cudfff]|[ud83dudc00-ud83dudfff]|[u2600-u27ff]","");returnstr;}}}附注:emoji表情符的编码表:http://punchdrunker.github.io/iOSEmoji/table_html/flower.html20174.2017/12/614:17后记:
5.本人在升级数据库后(mysql5.6),按照上述方法一操作,发现还是无法插入带有emoji标签的字符,检查我的数据库字符集发现:
6.执行:SHOWVARIABLESWHEREVariable_nameLIKE'character_set_%'ORVariable_nameLIKE'collation%';
7.出现:
character_set_clientutf8character_set_connectionutf8character_set_databaseutf8mb4character_set_filesystembinarycharacter_set_resultsutf8character_set_serverlatin1character_set_systemutf8collation_connectionutf8_general_cicollation_databaseutf8mb4_general_cicollation_serverlatin1_swedish_ci发现character_set_serverlatin1,百度知道latin1是ISO-8859-1的别名,也就是说安装数据库是选择的字符集是ISO-8859-1,导致我们新建数据库时服务器字符集(character_set_server)默认为iso-8859-1,解决方法:Linux版本的mysql安装后一般会有一个my.cnf文件,在etc目录下,cd/etc进入my.cnf目录,vimmy.cnf进入编辑模式,在[mysqld]下面增加两行配置:character_set_serverutf8mb4collation_serverutf8mb4_general_ci重启数据库:servicemysqldrestart;再次查询所有字符集都是utf8编码的,插入数据也成功character_set_clientutf8character_set_connectionutf8character_set_databaseutf8mb4character_set_filesystembinarycharacter_set_resultsutf8character_set_serverutf8mb4character_set_systemutf8collation_connectionutf8_general_cicollation_databaseutf8mb4_general_cicollation_serverutf8mb4_general_ci
微信公众号开发微信昵称中含有emoji字符串处理-微店的小程序可以添加到公众号吗-微信公众号如何添加小程序
浏览量:1636
时间:
来源:严兵123
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

小程序制作平台选型踩坑记录:2026年五大主流方案横向对比
2026 年微信小程序月活达 10.7 亿、覆盖 108 个行业,本次横向对比即速应用、乔拓云、凡科、有赞、微盟五大主流平台,分三阶段给出选型结论,核心聚焦成本、扩展性、运营能力三大维度。 -

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。










