Incorrect string value: '\xF0\x9F\x8C\xB8' for column 'fullname' at row 1 报错的详解

导读

  • 数据库入库的时候报了这样一个错。原因是入库的字段包含一个emoji表情。
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8C\xB8' for column 'fullname' at row 1

处理办法

  • 把数据库编码集改为 utf8mb4 即可。

utf8mb4的详解

  • MySQL在5.5.3版本之后增加了这个utf8mb4的编码。
  • utf8mb4是utf8的超集,理论上原来使用utf8,然后将字符集修改为utf8mb4,不会对已有的utf8编码读取产生任何问题。
  • mb4就是most bytes 4的缩写,专门用来兼容四字节的unicode。
  • utf8编码,最大字符长度为 3 字节,如果遇到 4 字节的字符就会出现错误了。
  • 三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xFFFF,也就是 Unicode 中的基本多文平面(BMP)。Emoji 表情和一些不常用的汉字,以及任何新增的 Unicode 字符,不属于BMP。
  • 可以用utf8mb4字符编码直接存储emoj表情,而不是存表情的替换字符。
  • 为了获取更好的兼容性,应该使用 utf8mb4 而非 utf8。
  • 对于 CHAR 类型数据,使用utf8mb4 存储会多消耗一些空间。

以上文字总结自

原文链接:http://blog.xieyc.com/utf8-and-utf8mb4/

你可能感兴趣的:(java,sql)