我正在使用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字符转换为``或其他东西吗?
最佳答案
您应该先删除不良字符,然后将内容持久保存到数据库中。
这将帮助您:
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();
}