Django+mysql支持emoji表情

原创 2017年08月09日 17:13:26

mysql开始使用的是utf-8编码,使用微信进行第三方登录后,同步微信昵称是报错:

OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x90\\xA0' for column 'nickname' at row 1")

经过排查发现该微信号的昵称里包含emoji表情,emoji表情对应的编码是4个字节, 而utf-8是3个字节,所以报错。

解决方法:

1、修改django连接数据库时的字符集

在django项目的setting文件中,你必须设置charset=utf8mb4

DATABASES = {
    'default': {
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}

2、修改数据库,表,列的字符集

ALTER DATABASE database_name  CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

报错:MySQL: ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

原因:mysql的索引是有长度限制的, 我的表里有个索引字段的长度是255。 255*4 = 1020, 大于767。mysql索引长度限制请参考链接:点击打开链接
ALTER TABLE user CHANGE nickname nickname varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;

3、修改sql_mod 

设置mysql sql_mod

4、重启数据数

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

使用django向mysql中存入emoji表情

问题:使用django+python+mysql开发微信公众号的后台服务器,在将用户的昵称存入数据库时,报错. 原因:之前将数据库的编码设置成utf8,当存入字母或中文字符时,都是3个直接. 而当用...

Django之celery分布式异步任务队列

Celery: Distributed Task Queue
  • lt2fish
  • lt2fish
  • 2016年07月18日 08:58
  • 1764

client 提交post 到 django出现403错误

当采用客户端象django的服务器提交post请求时。会得到403,权限异常。 因为django针对提交的请教,有校验。所以会如此。 解决办法http://stackoverflow.co...
  • watsy
  • watsy
  • 2013年06月03日 00:48
  • 10289

django,mysql存储emoji表情,utf8mb4

django使用mysql存储emoji表情,utf8mb4格式。

MySQL修改字符集为utf8mb4以支持 emoji 表情符号

系统接入微信公众号,需要存储用户昵称,但是发现,有些用户的昵称存储报错; 查询之后,发现用户昵称中包含emoji表情,而数据库的编码为utf8; 因此需要对相关的数据库、表、字段等的编码进行修改,...

MySQL utf8mb4字符集:支持emoji表情符号

MySQL utf8mb4字符集:支持emoji表情符号 ㈠ 序言 为了应对无线互联网的机遇和挑战、避免 emoji 表情符号带来的问题、 涉及无线相关的 MySQL 数据库建议都提前采...

MySQL utf8mb4 字符集:支持 emoji 表情符号

㈠ 序言                为了应对无线互联网的机遇和挑战、避免 emoji 表情符号带来的问题、        涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集 ...

mysql数据库支持emoji表情

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

IOS mysql/Java服务端对emoji表情的支持

问题描述: 对于IOS开发来说,iOS项目因为需要用户文本的存储,自然就遇到了emoji等表情符号如何被mysql DB支持的问题 如果UTF8字符集且是Java服务器的话,当存储含有emoj...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Django+mysql支持emoji表情
举报原因:
原因补充:

(最多只允许输入30个字)