项目场景:

使用微信账号进行账号的注册

问题描述:

注册接口报错,我看了错误信息如下所示:

Incorrect string value: '\xF0\x9F\xA4\x97 3...' for column 'nick_name' at row 1

原因分析:

这应该说的是微信传过来的nickName字段名了,既然这个报错我就要看下用户他的昵称是什么,居然发现昵称是一个表情符号。

查询后发现emoji表情符采用Unicode 6标准,采用4个byte字节存储一个emoji表情符,而我们的mysql数据库采用UTF-8编码格式时,采用3个byte字节存储一个字符,这样插入数据库就会报错。好在mysql5.5.3之后新增了一个utf8mb4字符集,专门用来兼容4字节的Unicode字符。

解决方案:

第一种

把数据库和表的编码都改成utf8mb4,这个编码可以适配所有的符号

第二种

在存储昵称前,对昵称进行加密, 在获取昵称前,对加密的昵称进行解密

第三种

在保存昵称的地方,直接对昵称的特殊图片符号进行过滤,如下:

EmojiStringUtils.replaceEmoji(nickName);
public class EmojiStringUtils {/*** @Title:判断是否存在特殊字符串* @param* @author:yanbing* @date:2017-12-05 10:14*/public static boolean hasEmoji(String content){Pattern pattern = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]");Matcher matcher = pattern.matcher(content);if(matcher .find()){return true;    }return false;}/*** @Title:替换字符串中的emoji字符* @param* @author:yanbing* @date:2017-12-05 10:17*/public static String replaceEmoji(String str){if(!hasEmoji(str)){return str;}else{str=str.replaceAll("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]", " ");return str;}}
}

MySql存储含有特殊符号的微信昵称相关推荐

  1. mysql 如何存带有特殊符号的微信昵称

    PHP 将用户昵称已urlencode的方式加密存入数据库urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+ //将中文文 ...

  2. 关于获取带特殊符号的微信昵称

    最近做微信公众号的功能,刚开始没注意,拉取用户信息的时候,如果昵称有那种特殊符号,则保存到mysql数据库,其实是对mysql编码有要求的,一般我们装mysql数据库的话,一般编码都是UTF-8,而要 ...

  3. 昵称中含有特殊符号存入mysql数据库处理

    最近在开发项目时,用户使用第三方qq.微信.wb登录时,有的昵称是含有特殊符号或者是表情图片,在存入到mysql数据库时,会报错,在网上找了一种解决方式,具体如下: 微信昵称有特殊符号怎么保存到mys ...

  4. mysql存储用户昵称_mysql 微信用户昵称 emoji 完整保存 - 人人都是架构师

    微信用户昵称现在丰富多样,一些个性的名称中经常包含有特殊字符,以及emoji表情.起先,我总以为mysql只能保存纯文本数据.但其实mysql(5.7版本)已非常强大,完整保存微信用户昵称(emoji ...

  5. mysql微信昵称存储_mysql存储昵称带有emoji处理方案

    1.背景 近期做了一个有关微信公众号的开发,系统需要存储用户的openId和昵称等基本信息.然而很多新潮儿,微信昵称会选择使用各种emoji表情,所以一不留神,作为大叔的我,当初设计表结构的时候就没考 ...

  6. mysql存储微信昵称使用的数据类型

    微信用户昵称现在丰富多样,一些个性的名称中经常包含有特殊字符,以及emoji表情. 如果我们使用普通的存储数据类型,会遇到如下报错: Cause: java.sql.SQLException: Inc ...

  7. 微信昵称有特殊符号怎么保存到mysql库里?

    微信昵称有特殊符号怎么保存到mysql库里? mysql库怎么保存emoji表情? 这里提供 1 种稳妥有效的方法: // 入库之前,使用 Base64 编码 String nickname = re ...

  8. MySQL中关于emoji表情的存储(微信登录出现登录失败【由于微信昵称字符问题】)

    MySQL中关于emoji表情的存储(微信登录出现登录失败[由于微信昵称字符问题]) 问题描述 解决方法 闲谈 问题描述 今天网站遇到用户说登录失败,查看日志发现是微信登录自动生成用户时,用户创建失败 ...

  9. mysql微信昵称特殊符号_MySQL保存微信昵称中的特殊符号造成:(Incorrect string value: xxxx'for column ‘name’ at row 1)异常...

    欢迎关注 CSDN:程序员小羊 微信公众号:程序员小羊 博客园:程序员小羊 今天有业务员反应,编辑某个用户的信息的时候出现了异常,异常信息如下: Incorrect string value: &qu ...

  10. mysql 存储微信昵称乱码_MYSQL 保存微信昵称特殊字符报错解决方法-设置编码集为utf8mb4的方法...

    mysql utf8mb4 保存微信昵称特殊字符报错方法 公众号二次开发,在处理用户昵称的时候发现有的时候一些emoji是4字节的表情无法保存入库,经过查找资料发现是因为字段的编码问题造成的, utf ...

最新文章

  1. 剑指_数组中出现次数超过一半的数字
  2. Java对象转JSON时如何动态的增删改查属性
  3. wxWidgets:wxSpinCtrlDouble类用法
  4. This is Me!——回顾第一个项目的前前后后
  5. 爱奇艺开源轻量级插件化方案 Neptune
  6. Tomcat------如何配置域名和80端口
  7. 【NOWCODER】- Python:列表(一)
  8. 基于CEP的量化交易平台建设
  9. 免疫学实验美图赏析馆(第三期)
  10. 华为提出“品质宽带”价值主张 共建宽带产业新生态
  11. java 数组 协变类型6_Java漫谈-协变返回类型
  12. 职场人:高薪工作的独木桥这样做可以走成康庄大道
  13. 三国志9攻略 修行 兵法
  14. linux设置密码复杂程度
  15. Qt Creator怎样更改默认构建目录,文件夹看起来整洁
  16. R语言-爬虫rvest
  17. Sleep tight:(晚上) 睡个好觉!
  18. 使用text2image将文字转换成图片
  19. 计算机工程与科学不是CSCD吗,计算机工程与科学核心电子期刊发表要求
  20. 【问题】桌面快捷方式变成空白

热门文章

  1. 云服务器出现502错误的原因与解决方案
  2. 山西尚呈:拼多多砍价窍门秘诀及攻略?
  3. 计算离散点线性相关系数
  4. WiFi钥匙管家-免费上网神器
  5. 数据分析师面试常见的77个问题
  6. 往十年不忘初心,新十年不负韶华丨万字长文带你完整回顾2020数据技术嘉年华
  7. java系统过载保护_浅谈过载保护
  8. SVN Clean up 失败和SVN is already locked情况解决
  9. 什么是聚集索引和非聚集索引 ( 或者聚簇索引和非聚簇索引 )
  10. 华为手机使用应用沙盒动态修改imsi参数