如何在MySQL中存储emoji表情

作者:掠影
最后编辑时间:2017-04-25 18:37:15
浏览次数:1045



在现行的博客,论坛系统中,时常会出现用户表情的输入,而对于一般的MySQL表编码,如utf8等,由于存储单个字符的上限为3个,因而无法存储利用4个字符存储的emoji字符(Unicode格式),针对这种情况,通常仅仅需要改变包含有emoji字符的字段的编码格式为utf8mb4即可,如下所示,从 mysql 5.5.3 之后版本基本可以无缝升级到 utf8mb4 字符集。同时,utf8mb4兼容utf8字符集,utf8 字符的编码、位置、存储在utf8mb4与utf8字符集里一样的,不会对有现有数据带来损坏。

首先,需要更改服务器的默认编码设置,在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 | utf8 |    
| character_set_system | utf8 |      
+--------------------------+---------------------------------+

然后,通过修改mysql默认字符集的方法,为通过SET指令直接定义常量值

mysql> SET character_set_client = utf8mb4 ;   
mysql> SET character_set_connection = utf8mb4 ;    
mysql> SET character_set_database = utf8mb4 ;    
mysql> SET character_set_results = utf8mb4 ;     
mysql> SET character_set_server = utf8mb4 ;
其次,本系统中调用了CI的数据库类,故而需要通过修改database.php文件来实现连接时字符编码的设置。   
'char_set' => 'utf8mb4', 
'dbcollat' => 'utf8mb4_general_ci', 

完成后,通过post提交,显示结果如下:

修改前:??

修改后:😉

           

 存储成功~ 😉

取消

感谢您的支持,我会继续努力的!关闭

扫码支持
大家有钱的捧个钱场,没钱的捧个人场233333

打开支付宝扫一扫,即可进行扫码打赏哦

分享到: QQ空间 更多



评论区

  • 180.167*****: 2017-04-25
    文章写的好棒~
  • 180.167*****: 2017-04-25
    谢谢大神~
  • 180.167*****: 2017-04-25
    我觉得扯淡,我的电脑上就不行😏
  • 180.167*****: 2017-04-26
    表设置倒是不难,不过难度在于修改插入时的编码格式