从MySQL5.5.3开始,MySQL 支持一种utf8mb4的字符集,这个字符集能够支持4字节的UTF8编码的字符。utf8mb4字符集能够完美地兼容utf8字符串。在数据存储方面,当一个普通中文字符存入数据库时仍然占用3个字节,在存入一个Unified Emoji表情的时个它会自动占用4个字节。所以在输入输出时都不会存在乱码的问题了。

由于utf8mb4是utf8的超集,从utf8升级到utf8mb4不会有任何的问题,直接升级即可;如果从别的字符集如gb2312或者gbk转化而来,一定要先备份数据库。然后,修改MySQL的配置文件/etc/my.cnf,修改连接默认字符集为utf8mb4,然后在连接数据库以后首先执行一句SQL:SET NAMES utf8mb4;

修改如下:

# cat /etc/my.cnf
# update -- [mysql]
# CLIENT #
port =
socket = /data1/dbdata/mysql.sock
default-character-set = utf8mb4 #关键点1 [mysqld]
# GENERAL #
user = mysql
default-storage-engine = InnoDB
character-set-server = utf8mb4 #关键点2

查看可以查看编码是否已经修改成功:

mysql> show variables like 'character%';
+--------------------------+---------+
| Variable_name | Value |
+--------------------------+---------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | |
+--------------------------+---------+
rows in set (0.00 sec)

utf8 转utf8mb4就可以支持emoji表情了

当重启mysql后,再次登录的时候,出现下面的情况:

[root@db228 ~]# mysql
mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

http://blog.csdn.net/amao1/article/details/34851533

还需要修改一个修数:

+ +-- lines: <?xml version='1.0' encoding="utf-8"?>------|+ +-- lines: <?xml version='1.0' encoding="utf-8"?>-----
<description>ARMSCII- Armenian</description> | <description>ARMSCII- Armenian</description>
<alias>armscii-</alias> | <alias>armscii-</alias>
<collation name="armscii8_general_ci" id="" order="Arm| <collation name="armscii8_general_ci" id="" order="Ar
<collation name="armscii8_bin" id="" order="Binary"| <collation name="armscii8_bin" id="" order="Binary
</charset> | </charset>
|
<charset name="utf8mb4">#只修改这里(修改后) | <charset name="utf8">
<family>Unicode</family> | <family>Unicode</family>
<description>UTF- Unicode</description> | <description>UTF- Unicode</description>
<alias>utf-</alias> | <alias>utf-</alias>
<collation name="utf8_general_ci" id=""> | <collation name="utf8_general_ci" id="">
<flag>primary</flag> | <flag>primary</flag>
<flag>compiled</flag> | <flag>compiled</flag>
+ +-- lines: </collation>--------------------------------|+ +-- lines: </collation>-------------------------------
~ | ~
~ | ~
~ | ~
~ | ~
~ | ~
~ | ~
~ | ~
~ | ~
~ | ~
~ | ~
~ | ~
~ | ~
~ | ~
/usr/share/mysql/charsets/Index.xml , All /usr/share/mysql/charsets/Index.xml.bak , All

修改表的字符集:

mysql> alter table table_name convert to character set utf8mb4 collate utf8mb4_bin;

打印机不能打印"emoji表情"!!!!!!!!所以最好不要存emoji表情。

数据库支持emoji表情的更多相关文章

  1. 教你如何让数据库支持emoji表情符存储

    From: http://www.cnblogs.com/janehoo/archive/2016/04/06/5359800.html 一.教你如何让数据库支持emoji表情符存储 解决方式:更换字 ...

  2. 让MySQL数据库支持Emoji表情

    问题:Emoji 表情是按照4个字节存储的,所以传统 mysql utf-8编码只能最大存储3字节. 解决:修改MySQL(5.5.3以上版本) 编码为utf8mb4 即可存储Emoji表,同时设置 ...

  3. js处理表情字符且让数据库支持emoji表情符存储

    数据库处理 更换字符集utf8-->utf8mb4 JS处理 将表情转为字符: function utf16toEntities(str) { var patt=/[\ud800-\udbff] ...

  4. mysql数据库支持 emoji表情

    关键点: 1. 修改mysql数据库表ALTER table <tablename>  modify <clolum>  char(100) character set utf ...

  5. mysql支持emoji表情符存储

    一.教你如何让数据库支持emoji表情符存储 解决方式: 更换字符集utf8-->utf8mb4 问题描述: 前台应用抓取微博信息,每天总有几条数据插入不成功.应用日志显示: java.sql. ...

  6. mysql数据库字符集相关操作(修改表字段编码,使其支持emoji表情)

    普通的UTF8编码是不支持emoji表情插入的,会报异常: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x9 ...

  7. 数据库需要支持emoji表情

    由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码 ...

  8. MySQL支持Emoji表情

    让MySQL支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集. utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节, ...

  9. MySQL中支持emoji表情的存储

    由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码 ...

随机推荐

  1. 服务器如何处理http请求

    1.需求 了解服务端如何处理http请求,了解基本的处理流程 2.实战 处理http请求分为7个步骤 2.1 Tcp连接 建立一条tcp链接,(若之前不存在持久链接keep-alive),把客户端的i ...

  2. 说说JSON和JSONP,也许你会豁然开朗

    前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socke ...

  3. ios10 UNNtificationRequest UNUserNotificationCenter的应用 推送之本地推送

    iOS10 已经 "deprected" 我们的UILocalNotification 采用了全新的UNUserNotificationCenter; 1 首先,你需要引进< ...

  4. php curl 实例+详解

    直接上实例 <?php //创建一个新cURL资源 $ch = curl_init(); //用于中文等特殊字符的url转码 $aurl = urlencode($address); $url= ...

  5. Java中如何解决double和float精度不准的问题

    我们知道浮点数是无法在计算机中准确表示的,例如0.1在计算机中只是表示成了一个近似值,因此,对付点数的运算时结果具有不可预知性. 在进行数字运算时,如果有double或float类型的浮点数参与计算, ...

  6. c#.netGr idView1在div不局中

    <div style="margin:0 auto;text-align:center;" >//可以用GridView剧中 <asp:GridView ID=& ...

  7. 【leetcode】Search in Rotated Sorted Array

    Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you before ...

  8. linux shell脚本通过参数名传递参数值

    平常在写shell脚本都是用$1,$2....这种方式来接收参数,然而这种接收参数的方式不但容易忘记且不易于理解和维护.Linux常用的命令都可指定参数名和参数值,然而我们怎样才能给自己的shell脚 ...

  9. C++ 使用SQLite

    1.SQLite是一个完全独立的.不需要服务器.不要任何配置.支持SQL的.开源的文件数据库引擎.源代码和支持可以登录:http://www.sqlite.org/   1.1.下载sqlite3.d ...

  10. 手记-数学分析(高等数学)中有关算法效率的公式列举(O,Θ,Ω)

      权当数据结构与算法分析的学习手记     系数为一的幂级数部分和公式 ∑ n2 = 12 + 22 + 32 + ... + n2 = n(n+1)(2n+1)/6 = O(n3) ∑ n3 =  ...