之前還以為從上至下統一用上UTF-8就高枕無憂了,哪知道今天在抓取新浪微博的數據的時候還是遇到字符的異常。
從新浪微博抓到的數據在入庫的時候拋出異常:
Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90...'
發現導致異常的字符不是繁體而是某種佛經文字。。。額滴神。。。但是按道理UTF-8應該能支持才對啊,他不是萬能的麼?
原來問題出在mysql上,mysql如果設置編碼集為utf8那麼它最多只能支持到3個字節的UTF-8編碼,而4個字節的UTF-8字符還是存在的,這樣一來如果你建表的時候用的utf8字符集出異常就理所當然了。
解決方法很簡單,修改字段或者表的字符集為utf8mb4。
比較蛋疼的是,字符集utf8mb4在mysql 5.5.3之後才支持。