Jquery中文网 www.jquerycn.cn
Jquery中文网 >  数据库  >  mysql  >  正文 mysql5.5.3以上版本支持存储emoji

mysql5.5.3以上版本支持存储emoji

发布时间:2017-03-22   编辑:www.jquerycn.cn
jquery中文网为您提供mysql5.5.3以上版本支持存储emoji等资源,欢迎您收藏本站,我们将为您提供最新的mysql5.5.3以上版本支持存储emoji资源
本文章来为各位介绍一篇关于mysql5.5.3以上版本支持存储emoji例子,希望文章能够帮助到各位朋友,具体的细节如下所示。
<script>ec(2);</script>


在做基于办公的沟通软件中,常用一些emoji的聊天版本,发现在mysql中无法存储.

因为emoji表情在存储时转成的四个字节(\xF0\x9F\x90\xAC);
由于数据库使用的是utf8字符集utf8_general_ci,这个校对规则(collation)最大只支持3个字节,所以四个字节的emoji就会存储不全,从而取出无法显示.

简要说明

上文提到的 utf8_general_ci 与 ut8_unicode_ci 是utf8的两种字符编码方式,不同之处就是对字符的分类(sorting)和对比(comparison)。

MySQL 5.5.3及以后版本支持使用utf8mb4字符集,它在与utf8数据格式处理性能相同基础上加强了对字符码位(code point)的处理能力。与utf8对应的,utf8mb4有 utf8mb4_general_ci 和 utf8mb4_general_ci 。

utf8mb4_general_ci 基于Unicode standard sorting与comparison,支持更多的语言种类。
utf8mb4_general_ci 不能解析所有的Unicode分类规则,在一些特别的语言或字符处理上存在一定的问题。不过在性能上,它能更快的sorting、comparison,因其采用一组性能相关的快捷方式(performance-related shortcuts)。
解决办法

通过上文我们已经知道一种解决办法了,但有一个硬性条件就是你的数据库版本。当你的数据库版本没有达到5.5.3怎么办呢…总结一下,mysql支持存储emoji表情的方法,至少有两种。

1.修改数据库编码为utf8mb4,前提是你的mysql数据库版本必须得是5.5.3及以后的
2.将带emoji的文本转为base64来进行存储,返回时进行相应解码返回
下面介绍我如何使用第一种方法:

将数据库编码由utf8改为utf8mb4

set character_set_client      = utf8mb4;                      
set character_set_connection  = utf8mb4;                      
set character_set_database    = utf8mb4;                      
set character_set_results     = utf8mb4;                      
set character_set_server      = utf8mb4;
将已经生成的表也转成utf8mb4

ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
小记:直接在这个层面上解决,省了在代码中转和处理方便很多.

您可能感兴趣的文章:
SQLite列类型学习
DB2基础知识(1)了解DB2
memcachedb的编译与安装
php得到mssql的存储过程的输出参数的代码
php获取mssql的存储过程的输出参数的方法
把 bind 数据保存进mysql
ASP.NET缓存的方法分析
PostgreSQL从菜鸟到专家系列教程(8)数据定义 字符数据类型
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
oracle 存储过程发送邮件的例子

[关闭]