问题描述: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