欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在django做QQ登录中:Error 1366: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...' for column 'content'

程序员文章站 2022-06-22 08:34:33
在做第三方登录时, 我一个QQ昵称带表情包,三方登录就报 (1366, "Incorrect string value: '\\xF0\\x9F\\x91\\x89 \\xE5...' for column 'first_name' at row 1"), 另一个QQ存汉字,就能正常登录 可能的原因 ......

在做第三方登录时,

我一个qq昵称带表情包,三方登录就报 (1366, "incorrect string value: '\\xf0\\x9f\\x91\\x89 \\xe5...' for column 'first_name' at row 1"),

另一个qq存汉字,就能正常登录

可能的原因:

  • 第一:检查以下你的编辑器的编码是否设置为utf-8;这是最容易忽略的原因之一。
  • 第二:检查以下你数据库的varchar/char等相关字段是否已经设置为utf8

如果用的是navicat,需要检查两个地方;

 在django做QQ登录中:Error 1366: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...' for column 'content'

 

 

是否都已经设置:

在django做QQ登录中:Error 1366: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...' for column 'content'

 

实在不行就将utf8改成utf8mb4

google说mysql的utf8不是真正的utf8,只能包含三个字节的unicode,4个字节就会报错。要解决此总是需要使用utf8mb4 这个编码。可是我把表和column的charset都改成utf8mb4 后仍无法存入emoji字符。

原来还要在my.cnf里修改下mysqld的character-set-server,把它改为utf8mb4,然后重启mysqld,就可存入emoji字符了。

[mysqld]
character-set-server = utf8mb4

所以,建议大家以后在设计表时 default character set 最好设置为utf8mb4,因为现在emoji字符已经很流行了,用户难免会在浏览器里输入emoji字符。

转自:https://www.cnblogs.com/zmdComeOn/p/12666457.html