文档章节

MySQL存储emoji表情

k
 kunping
发布于 2017/04/27 11:15
字数 299
阅读 63
收藏 1
描述:由于字符集不支持的异常,因为utf-8编码有可能是两个、三个、四个字节,
      其中Emoji表情是四个字节,而MySQL的utf-8编码最多三个字节,所以导致数据插不进去。
      utf8mb4的最低mysql版本支持版本为5.5.3+

方式1:修改数据库层面
	查看数据库字符集:
		SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
		保证character_set_client/character_set_connection/character_set_database/character_set_results/character_set_server为utf8mb4。

	步骤1:修改数据库的字符集编码(database, table, column)
		-- 修改database字符集编码
		ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
		-- 修改表的字符集编码
		ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
		-- 修改列的字符集编码
		ALTER TABLE table_name CHANGE column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

	步骤2:修改MySQL的配置文件(my.ini/my.cnf),需重启MySQL(mysql restart)
		[client]
		default-character-set = utf8mb4

		[mysql]
		default-character-set = utf8mb4

		[mysqld]
		character-set-client-handshake = FALSE
		character-set-server = utf8mb4
		collation-server = utf8mb4_unicode_ci
		init_connect='SET NAMES utf8mb4'
		
	步骤3:升级最新版的mysql-connector-java >5.1.13,否则仍然无法使用utf8mb4
		其中的characterEncoding=utf8可以自动被识别为utf8mb4
		jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE

方式2:应用层转码和编码
	URLEncoder.encode(emoji, "utf-8");
	URLEncoder.decode(emoji, "utf-8");

 

© 著作权归作者所有

k
粉丝 3
博文 61
码字总数 29867
作品 0
深圳
私信 提问
Laravel项目中使用mysql存储emoji表情乱码的问题

在mysql中存储中文时通常用UTF8的编码方式,而用此编码方式存储emoji表情时,会出现乱码或插入失败,原因是utf8编码部支持emoji表情,至于为什么不支持,可参考这篇文章:mysql utf8mb4与emo...

4fun
2016/08/03
475
9
mysql存储 微信昵称(含有emoji表情) 报错 解决

做的项目,涉及到存储微信昵称、emoji表情,发现这个坑, emoji表情、微信昵称存储mysql到utf-8字段必须要做一下处理。 emoji表情是用4个字节编码,蛋疼的mysql版本默认varchar字段属于utf-8...

Code辉
2018/10/09
138
0
微信nickname乱码(emoji)及mysql编码格式设置(utf8mb4)解决的过程

网上的解决办法大多是修改my.cnf参数,设置mysql的编码为utf8mb4,这种方法虽然彻底,但是通常要重启mysql,会造成生产系统临时当机。我认为写的比较好的方法是:mysql/Java服务端对emoji的支...

Jack088
05/16
78
0
mysql支持emoji表情存取的解决方案

让mysql支持emoji表情存取的解决方案 APP移动端无需做任何修改,服务端修改即可。 第一步:修改jdbcUrl: 第二步:mysql驱动包: 第三步:数据库版本检查: 第四步:修改mysql配置文件 my.ini...

xiejunbo
2015/10/06
9.1K
0
mysql utf8mb4与emoji表情【转】

MYSQL 5.5 之前, UTF8 编码只支持1-3个字节,只支持BMP这部分的unicode编码区, BMP是从哪到哪,到http://en.wikipedia.org/wiki/MappingofUnicodecharacters这里看,基本就是0000~FFFF这一...

万里虎
2016/03/16
190
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部