mysql存储 emoji表情出错_mysql不能保存emoji表情的问题处理

mysql保存emoji表情的问题

起因

默认的utf-8编码支持的一个字符最多是3个字节,而手机输入法中的emoji表情是4个字节,所以保存时会报错.

解决方案

utf8的超集utf8mb4一个字符最多能有4字节,支持emoji表情的存储。

操作步骤

1.修改mysql配置

打开my.cnf文件(一般在/etc下),加入配置

[client]

default-character-set = utf8mb4

[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'

2.修改数据库/表/字段

ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE 表名 CHANGE 字段名 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

也可以直接在navicate中修改

3.查询编码

重启mysql

service mysqld restart

进入mysql后 查询

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

显示如下

+--------------------------+--------------------+

| Variable_name | Value |

+--------------------------+--------------------+

| character_set_client | utf8mb4 |

| character_set_connection | utf8mb4 |

| character_set_database | utf8mb4 |

| character_set_filesystem | binary |

| character_set_results | utf8mb4 |

| character_set_server | utf8mb4 |

| character_set_system | utf8 |

| collation_connection | utf8mb4_unicode_ci |

| collation_database | utf8mb4_unicode_ci |

| collation_server | utf8mb4_unicode_ci |

+--------------------------+--------------------+

4.修改项目

去掉配置里边jdbc关于characterEncoding=utf-8的部分

如果使用阿里数据源,spring框架下面的配置只需增加一行设置即可。

......

在dataSource 内增加这一行 配置即可解决问题。

注意事项

网上说5.5.3以后才支持utf8mb4,实测5.5.28也可以

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值