在mysql数据库中保存emoji特殊字符

转载 2017年08月24日 16:45:21

原文地址:http://blog.csdn.net/fudaoji/article/details/70239479

MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。其实,utf8mb4是utf8的超集,理论上原来使用utf8,然后将字符集修改为utf8mb4,也 不会对已有的utf8编码读取产生任何问题。

一次在做微信二开的项目时,发现保存微信用户信息的nickname时报错,寻找原因发现是有些用户昵称是带有emoji表情符的,并且当时的数据库表属性设置的字符编码还是utf8的,数据库当然会报错。经过网上搜索一些资料,找到了完整的解决方案:

1. 修改database,table,column字符集:

这里我有做测试,其实只用修改你包含emoji表情符 的列的编码为utf8mb4就好了,不用把整个数据库,整个表都修改。

[sql] view plain copy print?
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(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;      

2. 编辑my.cnf文件,在对应章节添加如下内容:

此文件要修改

[sql] view plain copy print?
[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服务即可

相关文章推荐

flume学习05---Exec Source

Exec SourceExec Source在启动时运行给定的Unix命令,并期望进程在标准输出上产生连续的数据(除非属性logStdErr设置为true,否则stderr将被丢弃)。 如果进程由于任...

数据仓库分层架构设计

大数据数据仓库是基于HIVE构建的数据仓库,分布文件系统为HDFS,资源管理为Yarn,计算引擎主要包括MapReduce/Tez/Spark等,分层架构如下: ...

Java与Mysql开发中的特殊字符(包括Emoji)

背景知识  emoji表情符号,是20世纪90年代由NTT Docomo栗田穣崇(Shigetaka Kurit)创建的,词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)。emoj...
  • Lane0x
  • Lane0x
  • 2015年11月14日 12:13
  • 1558

mysql数据库存储emoji表情字符解决方案

最近在做微信端 web 程序开发,IOS端用户在输入时可能输入 emoji 字符,由于 utf8的 mysql 数据库并不支持存储这种字符,会报Incorrect string value: ‘\xF...

Android 过滤特殊字符和emoji表情

网上有很多屏蔽特殊字符和表情的例子,用起来也很简单,比如: //判断搜索框内容是否包含特殊字符 String limitEx = "[`~!@#$%^&*()+=...
  • luckrr
  • luckrr
  • 2016年12月21日 14:32
  • 3008

MySQL数据入库时特殊字符处理

在一个字符串中,如果某个序列具有特殊的含义,每个序列以反斜线符号 (“/”)开头,称为转义字符。 MySQL 识别下列转义字符: /0 一个 ASCII 0 (NUL) 字符。 /' 一个 ASCII...
  • ansha886
  • ansha886
  • 2011年03月04日 19:11
  • 19259

Mysql 删除表名中有特殊字符的表

mysql中表名包含特殊字符的处理

python向mysql插入特殊字符

http://blog.csdn.net/shellshine/article/details/8207448 向mysql数据库插入数据时经常会碰到一些特殊字符,如单引号,双引号。 ...

Mysql LIKE中特殊字符转义【附php实现函数】

提要:Mysql的LIKE的转义和普通字符串的不同。 首先来看一个测试: mysql> SET @a='\\';SELECT @a,@a LIKE '\\\\'; +----+---...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在mysql数据库中保存emoji特殊字符
举报原因:
原因补充:

(最多只允许输入30个字)