我使用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字符转换为�或其他东西吗?
答案 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();
}