Mysql-输入Emoji表情

之前开发app遇到过一个问题, 用户发表评论里如果带有Emoji表情就会失败,查看日志数据库会报如下错误:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1

网上搜了一圈说是字符集的问题, 详细解释在这里 -> Emoji表情符号兼容方案
既然说了utf8的字符集不行, 那就去改字符集, 统统改成utf8mb4.

1.先去修改表字段字符集为utf8mb4:

1
ALTER TABLE 表名 MODIFY `字段名` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci';

2.再去修改表字符集utf8mb4:

1
ALTER TABLE 表名 CHARSET=utf8mb4;

3.再去配饰文件my.ini修改数据库的字符集utf8mb4:

1
2
init-connect='SET NAMES utf8mb4'
character-set-server=utf8mb4

三步完成后重启mysql服务, 再查看数据库字符集

mysql> show variables like '%char%';

±-------------------------±---------------------------------+
| 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 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
±-------------------------±---------------------------------+

再发表情测试通过!到此一切搞定收工.

(ps:如果以上方法下来并没有成功的话, 一定是你的mysql配置没放好, 那么请参考下面这篇文章, 绝对妥妥的 -> 如何修改MySQL字符集)

下面是一些相关命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--修改数据库字符集
ALTER DATABASE `数据库名` DEFAULT CHARACTER SET `字符集名`;

--把表默认的字符集和所有字符列改为新的字符集
ALTER TABLE `表名` CONVERT TO CHARACTER SET `字符集名`

--只修改表的默认字符集
ALTER TABLE `表名` DEFAULT CHARACTER SET `字符集名`

--修改字段的字符集
ALTER TABLE `表名` CHANGE `字段名` `字段名` CHARACTER SET `字符集名`

--查看数据库编码
SHOW CREATE DATABASE `数据库名`

--查看表编码
SHOW CREATE TABLE `表名`

--查看字段编码
SHOW FULL COLUMNS FROM `表名`
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2017-2023 王丹鹏
  • Powered by Hexo Theme Ayer
  • 冀ICP备15029707号

请我喝杯咖啡吧~

支付宝
微信