1

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

错误 pool-3-thread-20 org.hibernate.util.JDBCExceptionReporter - 第 1 行的列 'u_content' 的字符串值不正确:'\xEF\xBF\xBD???...'

我没有将我们的 MySQL 服务器升级到 5.5 的“许可”,因此该修复程序已失效。

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

4

1 回答 1

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();
}
于 2015-09-29T21:02:30.647 回答