MySql存储含有特殊符号的微信昵称
项目场景:
使用微信账号进行账号的注册
问题描述:
注册接口报错,我看了错误信息如下所示:
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存储含有特殊符号的微信昵称相关推荐
- mysql 如何存带有特殊符号的微信昵称
PHP 将用户昵称已urlencode的方式加密存入数据库urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+ //将中文文 ...
- 关于获取带特殊符号的微信昵称
最近做微信公众号的功能,刚开始没注意,拉取用户信息的时候,如果昵称有那种特殊符号,则保存到mysql数据库,其实是对mysql编码有要求的,一般我们装mysql数据库的话,一般编码都是UTF-8,而要 ...
- 昵称中含有特殊符号存入mysql数据库处理
最近在开发项目时,用户使用第三方qq.微信.wb登录时,有的昵称是含有特殊符号或者是表情图片,在存入到mysql数据库时,会报错,在网上找了一种解决方式,具体如下: 微信昵称有特殊符号怎么保存到mys ...
- mysql存储用户昵称_mysql 微信用户昵称 emoji 完整保存 - 人人都是架构师
微信用户昵称现在丰富多样,一些个性的名称中经常包含有特殊字符,以及emoji表情.起先,我总以为mysql只能保存纯文本数据.但其实mysql(5.7版本)已非常强大,完整保存微信用户昵称(emoji ...
- mysql微信昵称存储_mysql存储昵称带有emoji处理方案
1.背景 近期做了一个有关微信公众号的开发,系统需要存储用户的openId和昵称等基本信息.然而很多新潮儿,微信昵称会选择使用各种emoji表情,所以一不留神,作为大叔的我,当初设计表结构的时候就没考 ...
- mysql存储微信昵称使用的数据类型
微信用户昵称现在丰富多样,一些个性的名称中经常包含有特殊字符,以及emoji表情. 如果我们使用普通的存储数据类型,会遇到如下报错: Cause: java.sql.SQLException: Inc ...
- 微信昵称有特殊符号怎么保存到mysql库里?
微信昵称有特殊符号怎么保存到mysql库里? mysql库怎么保存emoji表情? 这里提供 1 种稳妥有效的方法: // 入库之前,使用 Base64 编码 String nickname = re ...
- MySQL中关于emoji表情的存储(微信登录出现登录失败【由于微信昵称字符问题】)
MySQL中关于emoji表情的存储(微信登录出现登录失败[由于微信昵称字符问题]) 问题描述 解决方法 闲谈 问题描述 今天网站遇到用户说登录失败,查看日志发现是微信登录自动生成用户时,用户创建失败 ...
- mysql微信昵称特殊符号_MySQL保存微信昵称中的特殊符号造成:(Incorrect string value: xxxx'for column ‘name’ at row 1)异常...
欢迎关注 CSDN:程序员小羊 微信公众号:程序员小羊 博客园:程序员小羊 今天有业务员反应,编辑某个用户的信息的时候出现了异常,异常信息如下: Incorrect string value: &qu ...
- mysql 存储微信昵称乱码_MYSQL 保存微信昵称特殊字符报错解决方法-设置编码集为utf8mb4的方法...
mysql utf8mb4 保存微信昵称特殊字符报错方法 公众号二次开发,在处理用户昵称的时候发现有的时候一些emoji是4字节的表情无法保存入库,经过查找资料发现是因为字段的编码问题造成的, utf ...
最新文章
- 剑指_数组中出现次数超过一半的数字
- Java对象转JSON时如何动态的增删改查属性
- wxWidgets:wxSpinCtrlDouble类用法
- This is Me!——回顾第一个项目的前前后后
- 爱奇艺开源轻量级插件化方案 Neptune
- Tomcat------如何配置域名和80端口
- 【NOWCODER】- Python:列表(一)
- 基于CEP的量化交易平台建设
- 免疫学实验美图赏析馆(第三期)
- 华为提出“品质宽带”价值主张 共建宽带产业新生态
- java 数组 协变类型6_Java漫谈-协变返回类型
- 职场人:高薪工作的独木桥这样做可以走成康庄大道
- 三国志9攻略 修行 兵法
- linux设置密码复杂程度
- Qt Creator怎样更改默认构建目录,文件夹看起来整洁
- R语言-爬虫rvest
- Sleep tight:(晚上) 睡个好觉!
- 使用text2image将文字转换成图片
- 计算机工程与科学不是CSCD吗,计算机工程与科学核心电子期刊发表要求
- 【问题】桌面快捷方式变成空白