mysql-django-support-emoji(utf8mb4)

今天在做mysql数据存储的时候就遇见了大家可能都会遇见的问题(emoji存储)
这里主要是涉及到utf8mb4的设置

mysql 5.5以上才支持字符集
第一步:数据库版本检查:

1
select version() #查看mysql版本

第二步:修改mysql配置文件 my.conf(windows上my.ini), 修改/添加如下配置为:

1
2
3
4
5
6
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4

第三步:重启mysql

1
$service mysql restart

第四步:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 |
+--------------------------+--------------------+
rows in set (0.00 sec)

最后,因为我是跟django一起配合用的,所以 django的settings.py文件里也要做相应的配置

1
2
3
4
5
6
7
 DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
...
'OPTIONS': {'charset': 'utf8mb4'},
}
}

希望可帮到你,Best wishes