zoukankan      html  css  js  c++  java
  • 让mysql支持emoji表情

    一、问题及原因

    APP产品想对Emoji进行支持,但发现mysql数据库无法写入表情。原因是我们的mysql数据库默认用的是utf8编码,utf8编码存储时用的是三个字节,但Emoji表情是4个字节,所以导致了数据插入异常。

    原因找到了就很好办,mysql5.5.3之后的版本支持utf8mb4编码,这种编码是utf8的升级版,用的是4个字节进行存储。所以需要做的就是把mysql字符集从utf8升级为utf8mb4就行了。

    二、升级步骤

    1、备份数据库

    虽然utf8mb4兼容utf8,但最好还是作个数据库备份。

    2、升级mysql版本到5.5.3以上

    这个就不说了,根据你的服务器系统做mysql升级。

    3、修改服务器上mysql默认编码,修改数据库、表、列的字符集为utf8mb4

    修改服务器上mysql配置文件my.conf(如ubuntu为例,一般在/etc/mysql/my.conf):

    [client] 
    #xxx 已有配置
    default-character-set = utf8mb4
    
    [mysql]
    #xxx 已有配置
    default-character-set = utf8mb4
    
    [mysqld]
    #xxx 已有配置
    character-set-client-handshake = FALSE
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    init_connect='SET NAMES utf8mb4'

    改完要重启mysql

    修改数据库、表、列字符集:

    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    这里看到没有修改列的字符集,因为我试过后发现,改了表的字符集后,表中列的字符集自动修改为utf8mb4了。

    改完可以查看一下:

    这里要确保红框内变量值是utf8mb4。

    可以看到列的字符集已经改过来了。

    4、检查列的最大长度及索引

    这个就根据情况自己检查调整了。

    5、修改客户端连接程序编码

    把代码中连接数据库时的字符集设置为utf8mb4即可

    参考文章:

    1、How to insert utf-8 mb4 character(emoji in ios5) in mysql?

    2、https://segmentfault.com/a/1190000000616820

  • 相关阅读:
    python操作pymysql
    使用raise语句抛出异常
    异常处理
    01.正太分布模型
    常用正则表达式总结(47条)
    Scrapy项目_苏宁图书信息
    Scrapy项目_阳光热线问政平台
    Scrapy 项目:腾讯招聘
    Python爬虫_糗事百科
    Python爬虫_百度贴吧(title、url、image_url)
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/mysql-emoji.html
Copyright © 2011-2022 走看看