JDBC MySQL存储没有utf8mb4编码的表情符号

时间:2016-09-26 04:02:02

标签: java mysql jdbc

跟踪:

  

2016-09-26 06:52:43.756 WARN 1280 --- [XNIO-2 task-1] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL错误:1366,SQLState:HY000
  2016-09-26 06:52:43.756 ERROR 1280 --- [XNIO-2 task-1] ohengine.jdbc.spi.SqlExceptionHelper:字符串值不正确:'\ xF0 \ x9F \ x80 \ x84'列名' '在第1行

我理解MySQL不想存储表情符号,我应该将编码更改为utf8mb4,但有没有办法存储字符串'\ xF0 \ x9F \ x80 \ x84'而不是' “?

1 个答案:

答案 0 :(得分:0)

您可能希望对存储在该字段中的值进行编码/解码。如果您考虑使用MimeUtility来执行此操作,则大多数(拉丁语)字符仍然可读:

st.setString(1, MimeUtility.encodeWord(nameWithEmoji));

ann检索

String nameWithEmoji = MimeUtility.decodeWprd(rs.getString("name"));