Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xE3\x80...' for column 'show_content' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2487)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
... 64 more
今天在爬取文章的時(shí)候眉反,在將數(shù)據(jù)插入mysql數(shù)據(jù)庫的時(shí)候笆呆,出現(xiàn)了Incorrect string value: '\xF0\x9F\x98\xAD",...' for column 'commentContent' at row 1 這個(gè)錯(cuò)誤呵曹,Google了下發(fā)現(xiàn)原來是因?yàn)閿?shù)據(jù)庫編碼問題導(dǎo)致的脏款,原因在于我們的評(píng)論數(shù)據(jù)中存在emoj表情酱讶,而這些表情是按照四個(gè)字節(jié)一個(gè)單位進(jìn)行編碼的退盯,而我們通常使用的utf-8編碼在mysql數(shù)據(jù)庫中默認(rèn)是按照3個(gè)字節(jié)一個(gè)單位進(jìn)行編碼的,正是這個(gè)原因?qū)е聦?shù)據(jù)存入mysql數(shù)據(jù)庫的時(shí)候出現(xiàn)錯(cuò)誤浴麻,那么這個(gè)問題我們應(yīng)該怎么解決呢得问?
分為下面三個(gè)步驟來解決:
(1)修改mysql數(shù)據(jù)庫的編碼為uft8mb4
(2)修改數(shù)據(jù)表的編碼為utf8mb4
(3)修改連接數(shù)據(jù)庫的連接代碼
其中:
(1)修改mysql數(shù)據(jù)庫的編碼為uft8mb4
ALTER SCHEMA ak47_cms
DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;
修改方法:
參看:http://blog.csdn.net/poice00/article/details/52129351
(2):修改數(shù)據(jù)表的編碼為utf8mb4
執(zhí)行命令:ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4;
(3):修改連接數(shù)據(jù)庫的連接代碼