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

    什么是emoji

    emoji就是表情符号 emoji的创造者是日本人栗田穰崇(Shigetaka Kurita)

    在数据库的编码不为utf8mb4,利用java mysql驱动保存含有表情符号的数据会出现异常java.sql.SQLException: Incorrect string value: 'xF0x9Fx94xA5' for column

    mysql中存储emoji表情符号

    以前做应用软件的时候 通常把mysql的字符编码设置为utf-8,但是这个编码却不支持emoji表情 是因为utf-8编码的一个字符最多只能存储3个字节,但一个emoji表情为4个字节,所以utf8不支持存储emoji表情。

    mysql中的utf8mb4却能支持emoji表情符号 所以我们只需要更改mysql的数据库编码格式为utf8mb4就能支持了。当然了表和字段也需要是这个编码的,在不手动设置表/字段编码的情况下,会默认继承数据库的编码格式。如果手动修改为字段或者表的编码 也需要手动把表和字段修改为utf8mb4

    物理机安装的数据库数据字符编码修改方式

    修改mysql的配置文件/etc/mysql/my.cnf 并重启数据库 如果是编译安装 有可能不是这个目录噢~

    [mysql]
    default-character-set=utf8mb4
    

    云数据库 如阿里云的RDS 修改数据库编码方式

    找到指定库的参数设置中找到character_set_server修改为utf8mb4并重启数据库

    客户端驱动连接的URL

    jdbc:mysql://rr-xxxxx40.mysql.rds.aliyuncs.com:3306/db_test?useUnicode=true&zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8
    

      

    这样就能在mysql中存储emoji表情符号了,utf8mb4utf-8的超集 意味着反正utf8mb4也能兼容utf-8 在不考虑存储大小的情况下 可以直接把库设置为utf8mb4以免后续烦恼。

    当前测试的数据版本为RDS mysql 5.6.16
    JAVA驱动版本为5.1.30

      

  • 相关阅读:
    我的Android学习路线(二)
    利用python3.x实现小爬虫下载贴吧内图片
    我的Android学习路线(一)
    根网科技面试题
    sql语句的执行顺序
    英文面试常见问题汇总
    关于oracle、sqlserver、mysql查询前N条数据的实现
    LinqToSql(一)
    关于一些概念的问题,命名空间,程序集,解决方案,项目
    索引器
  • 原文地址:https://www.cnblogs.com/peachyy/p/9829479.html
Copyright © 2011-2022 走看看