mysql emoji emoji_mysql支持emoji

前言:

在项目中遇到存入emoji表情到mysql时报错

原因:

mysql的utf8最大支持3字节的字符,而emoji和部分汉字是4字节的。需要改成utf8mb4字符集,mb4是most bytes 4的缩写。

1.查看数据库服务器和数据库字符集

指令:show variableslike'%character%';  和  show variables like 'collation%';系统变量解释:

– character_set_server:默认的内部操作字符集

– character_set_client:客户端来源数据使用的字符集

– character_set_connection:连接层字符集

– character_set_results:查询结果字符集

– character_set_database:当前选中数据库的默认字符集

– character_set_system:系统元数据(字段名等)字符集

– 还有以collation_开头的同上面对应的变量,用来描述字符序,即排序规则

2.查看mysql所有数据库的字符集

指令:select SCHEMA_NAME,DEFAULT_CHARACTER_SET_NAME,DEFAULT_COLLATION_NAME,SQL_PATH from information_schema.SCHEMATA;

3.查看数据表的字符集

指令:show table status from 数据库名 like '数据表名';

4.查看数据表各字段的字符集

指令:show full columns from 数据表名;

上述数据库操作参考自:https://blog.csdn.net/leo__1990/article/details/93504528

在字符序中,_ci(case insensitive的缩写,大小写不敏感),_cs(case sensitive的缩写,大小写敏感),_bin(用编码值进行比较),_unicode(基于标准的Unicode来排序和比较,精确排序),_general(没有实现Unicode排序规则,速度更快)

通过查询上述指令,发现数据库是的字符集是utf8,数据表及其字段的字符序是utf8mb4_general_ci,字符集有三个作用域,优先级顺序为 列级 >表级 > 数据库级,此时应以字段(即列级)的字符集为主,但不懂为什么这样存入emoji还是失败,字段类型设置的是longtext,不知道和这有没有关系。

解决方案:

更改mysql配置

1.停止MySQL Server服务,修改mysql配置文件 my.cnf(其他系统)或者mysql.ini(windows系统)[mysql]

default-character-set = utf8mb4                  // 客户端默认的字符集

[mysqld]

character-set-client-handshake = FALSE

//不忽略客户端发送的字符集信息

character-set-server = utf8mb4                  //

服务器字符集

collation-server = utf8mb4_unicode_ci       //服务器字符序

init_connect='SET NAMES utf8mb4'          //客户端连接后默认执行的sql语句

2.重启 MySQL 服务

PS:JDBC的URL地址中,characterEncoding设置为UTF-8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值