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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yongche_shi/article/details/77000037

Django开发基础 

Django是最出名的py框架。Django大而全,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。总之,Django是快速开发网站的强大工具。 本期课程主要有Bootstrap框架,Django的工程创建,常用命令,配置文件,简单模版语言等。
  • 2017年03月03日 18:37

使用django向mysql中存入emoji表情

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

django,mysql存储emoji表情,utf8mb4

django使用mysql存储emoji表情,utf8mb4格式。
  • boycycyzero
  • boycycyzero
  • 2015-01-19 21:18:07
  • 8659

php+mysql保存emoji表情

解决方案参考:点击打开链接https://segmentfault.com/q/1010000003711491/a-1020000003712160 给一个标准的解决方案: ...
  • lein_wang
  • lein_wang
  • 2016-10-20 15:25:19
  • 2470

python django1.10.4 连接mysql (使用 pymysql)

1、安装pymysql,因为python3.5没有mysqldb包 pip install pymysql 2、在settings.py中添加下面内容: import pymysql pymysql...
  • jaket5219999
  • jaket5219999
  • 2017-02-09 11:00:21
  • 1748

Django+mysql支持emoji表情

mysql开始使用的是utf-8编码,使用微信进行第三方登录后,同步微信昵称是报错: OperationalError: (1366, "Incorrect string value: '\\xF0...
  • yongche_shi
  • yongche_shi
  • 2017-08-09 17:13:26
  • 422

阿里云rds+django存储emoji

1.mysql客户端,找到/etc/mysql路径下的my.cnf文件 [client] default-character-set = utf8mb4 [mysql] default-cha...
  • u010145988
  • u010145988
  • 2018-01-24 12:02:39
  • 134

Django 用户名支持30个以上字符。 (Monkeypatch版)

众所周知, Django自带的Auth backend username最大只支持30个字符, 对应的Django admin也是这么校验的。 最近项目换了Oauth, 想把Oauth id直接存到u...
  • u013411478
  • u013411478
  • 2014-12-05 15:29:34
  • 742

django将图片上传数据库后在前端显式

1、使用ImageField先安装pillow模块pip install pillow2、在app的models中设置class Image(models.Model): pic_na...
  • fearless11
  • fearless11
  • 2017-04-15 16:32:14
  • 1822

django1.7后集成south的使用方法

1.初次部署代码,初始化数据库,建表但并没有对app注册migrate python manage.py makemigrations python manage.py migrate 注:此时字段变...
  • u010145988
  • u010145988
  • 2015-06-08 15:21:26
  • 1011
收藏助手
不良信息举报
您举报文章:Django+mysql支持emoji表情
举报原因:
原因补充:

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