發現爬蟲軟件,爬取數據不及時,查詢服務器日志發現異常:
SQL state [HY000]; error code [1366]
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xAD</...'
顯示為某字段插入異常;而顯示該字段的值為上面顯示的字符
經過查閱發現mysql編碼問題
'\xF0\x9F\x98\xAD</...'
可以發現該字符為一個4字節的十六進制的字符
我們先看看mysql的字符集所支持的字節范圍:
SHOW CHARACTER SET;
發現:
utf8最大支持3個字節的字符
翻看了mysql官方version release notes,可以發現:
在version 5.5.3之后,增加了一種和utf-8類似的字符集utf8mb4,並且它的編碼支持4個字節每個字符,
所以解決辦法是:
將對應列的字符集改成utf8mb4
再進行插入測試,發現插入成功;
結束