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、重启数据数

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

字符串中Emoji表情处理(博客园迁移)

吃了经验的亏,因为Emoji表情引起的项目bug被撸主遇到两次了,总有一些调皮的小朋友爱用表情来搞点事。第一次把当时那个表改为utf8mb4解决了,第二次说啥都不好使。网上找了半天,发现好多人不去实验...
  • js_sky
  • js_sky
  • 2017年05月08日 22:42
  • 416

使用django向mysql中存入emoji表情

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

python emoji 表情过滤

http://my.oschina.net/jiemachina/blog/189460 注意替换的这些emoji是标准的表情字符,每个表情本来是2个字节,替换成字符串后,每个表情就变成...
  • junli_chen
  • junli_chen
  • 2017年08月29日 19:08
  • 218

Django模型修改及数据迁移

Migrations Django中对Model进行修改是件麻烦的事情,syncdb命令仅仅创建数据库里还没有的表,它并不对已存在的数据表进行同步修改,也不处理数据模型的删除。 如果你新增或修改...
  • yongche_shi
  • yongche_shi
  • 2015年07月20日 12:21
  • 1328

django,mysql存储emoji表情,utf8mb4

django使用mysql存储emoji表情,utf8mb4格式。
  • boycycyzero
  • boycycyzero
  • 2015年01月19日 21:18
  • 7929

使用django向mysql中存入emoji表情

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

python判断输入的内容是否是emoji表情:

python判断输入的内容是否是emoji表情: """ @描述 根据传入的content,判断是否是emoji字符。 @return True是emoji,Fa...
  • nicky9470
  • nicky9470
  • 2016年06月24日 13:52
  • 2707

Django用户认证系统(三)组与权限

Django的权限系统很简单,它可以赋予users或groups中的users以权限。 Django admin后台就使用了该权限系统,不过也可以用到你自己的代码中。 User对象具有两个...
  • yongche_shi
  • yongche_shi
  • 2015年07月08日 09:57
  • 1064

字符串中Emoji表情处理(博客园迁移)

吃了经验的亏,因为Emoji表情引起的项目bug被撸主遇到两次了,总有一些调皮的小朋友爱用表情来搞点事。第一次把当时那个表改为utf8mb4解决了,第二次说啥都不好使。网上找了半天,发现好多人不去实验...
  • js_sky
  • js_sky
  • 2017年05月08日 22:42
  • 416

Emoji表情在web端的展示步骤详解!!!

1、先上张图片,给大家看看需求是什么样的: 要求在安卓端或是iOS端上添加的emoji表情要能在web端进行展示出来。 2、拿到这种需求,对于底层的程序员来说,没办法以前没接触过,我只在斗图中...
  • LiMing_0820
  • LiMing_0820
  • 2017年08月03日 14:45
  • 1328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Django+mysql支持emoji表情
举报原因:
原因补充:

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