1366, "Incorrect string value: '\\xF0\\x9F\\x91\\x89\\xE3\\x80...' for column 'content' at row 1"

问题描述:Python从网站中抓取网页文本保存到MySQL数据中,对应数据库字段为longtext,字符编码utf-8。部分插入成功,部分插入失败,报错如下。
1366, "Incorrect string value: '\\xF0\\x9F\\x91\\x89\\xE3\\x80...' for column 'content' at row 1"

是因为mysql不能识别4个字节的utf8编码的字符,抛出了异常,这应该也是问题的根源。☺、��、类似于这种4个字节,将对应字符类型换成将对应的数据类型改为utf8mb4类型,同时连接类型也要改成utf8mb4_general_ci.

原因:

Mysql里UTF8编码最多只能支持3个字节,而Emoji表情字符使用的UTF8编码,很多都是4个字节,有些甚至是6个字节。

解决:

把要存入的数据库和表的编码及改为utf8mb4

 

 

还有python连接数据库的属性也要修改字符集

 

 故:按以上操作,重新建数据库和表

操作后,产生第二个报错信息:

 

(2019, “Can’t initialize character set utf8mb4 (path: /usr/share/mysql/charsets/)”) 错误解决方案

原因是mysql的驱动不支持,解决方法:

卸载mysql-python,改为安装 mysqlclient 最新版, windows下安装则  http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient  下载,然后就支持了。

在以上网址中下载

 

 

参考文章:https://blog.csdn.net/wzqnls/article/details/53412635

 

 找对应的版本下载,在win中安装whl文件。

win中安装whl文件的步骤:

1 . pip install wheel

2 . pip install  [whl文件的全路径名]  或者 在whl所在的目录下,使用cmd,然后 pip install xxxx.whl

 

 

 

posted @ 2020-02-21 22:47  cknds  阅读(1415)  评论(0编辑  收藏  举报