获取腾讯微博的评论 插入数据库的时候报这样的错误  
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x82' for column 'content' at row 1
上网查一些资料  是评论中存在特殊字符
修改数据库和表中的字符集仍无效
alter table t_mb_sessiondet modify column `content`text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;请问那位大侠帮忙解决下

解决方案 »

  1.   

    先set names gbk;
    再插入试试
      

  2.   

    检查一下字符集设置。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  3.   

    mysql中utf8字符MaxLen=3,但是某些unicode字符转成utf8编码之后有4个字节
    所以你  SHOW FULL COLUMNS  FROM   table  看一下 字段字符集
    应该需要更改字符集,才能插入
    你可以先执行  set names gbk  之类的操作
      

  4.   


    set names gbk/utf8/utf8mb4  重启mysql  测试又出现了
    java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x8D\xF0\x9F...' for column 'content' at row 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
    at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    这个肯定是字符集的问题  但不知道具体怎么设置  
    可能数据类似  ^_^¦¦¦^_^¦¦¦  这样的特殊字符
      

  5.   


    set names gbk/utf8/utf8mb4  重启mysql  测试又出现了
    java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x8D\xF0\x9F...' for column 'content' at row 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
    at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    这个肯定是字符集的问题  但不知道具体怎么设置  
    可能数据类似  ^_^¦¦¦^_^¦¦¦  这样的特殊字符

    调用了set names  gbk 语句之后是不重启mysql的
    建议你查一下 set names语句,就懂了。
    你出现的问题应该就是字符集问题。
      

  6.   

    我遇到与楼主同样的问题了,但是字符集没问题,数据库,表,字段全是utf8的。不过我知道那是表情的转码,导致插入不进去。
      

  7.   

    http://stackoverflow.com/questions/23670754/exception-java-sql-sqlexception-incorrect-string-value-xf0-x9f-x92-xbc-for改成utf8mb4