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字符串处理-微店的小程序可以添加到公众号吗-微信公众号如何添加小程序
浏览量:1604
时间:
来源:严兵123
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

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

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

零代码 + AI 双轮驱动|即速应用解锁人工智能小程序开发新范式
无需代码、无需 AI 算法功底,普通人也能快速搭建智能小程序。即速应用将人工智能与零代码开发深度融合,推出 AI 智能生成能力,用户通过自然语言描述需求,AI 自动生成小程序页面、功能模块与后台配置,覆盖商城、预约、同城、社区团购等全场景。平台内置 AI 智能推荐、智能客服、用户画像分析等能力,一键对接微信生态,打通视频号、企业微信、短信跳转,帮企业快速落地 AI 应用,抢占智慧经营先机,让每家企业都拥有 AI 驱动的智慧店铺。










