我如何将UTF8mb4转换为UTF-8?

时间:2015-02-12 22:19:03

标签: java docx4j utf8mb4

我使用docx4j将.docx文件转换为html,然后将该数据保存到MySQL数据库中。不幸的是,我们遇到了障碍。当我们转换包含在utf8mb4中编码的任何字符的文档,然后尝试将该数据提交给我们的MySQL服务器时,我们会遇到一个通用JDBC异常,该异常表明它不知道如何解析utf8mb4个字符。

ERROR pool-3-thread-20 org.hibernate.util.JDBCExceptionReporter - 字符串值不正确:' \ xEF \ xBF \ xBD ??? ...'对于专栏' u_content'在第1行

我没有'清除'将MySQL服务器移动到5.5,以便解决问题。

在Java中,我能以某种方式将utf-8mb4转换回utf-8并将所有utf-8mb4字符转换为�或其他东西吗?

1 个答案:

答案 0 :(得分:4)

您应首先删除不良字符,然后将内容保存到数据库。 这将对您有所帮助:

public static String removeBadChars(String s) {
  if (s == null) return null;
  StringBuilder sb = new StringBuilder();
  for(int i = 0 ; i < s.length() ; i++){ 
    if (Character.isHighSurrogate(s.charAt(i))) continue;
    sb.append(s.charAt(i));
  }
  return sb.toString();
}