問題描述: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