openfire mysql UTF-8编码在重新启动后失败

openfire mysql UTF-8编码在重新启动后失败,mysql,jdbc,utf-8,openfire,Mysql,Jdbc,Utf 8,Openfire,我正在使用jdbc连接openfire和mysql。在DB连接URL中设置characterEncoding=UTF-8后,一切正常,utf8数据可以成功写入DB。然而,每当openfire重新启动时,编码就不再工作,保存到DB中的所有内容都变成了“?” 我在谷歌上搜索了很多,但是我找到的所有东西(比如和)都是关于初始设置的教程,我已经成功了。我认为成功初始设置的关键是[1]在数据库中使用utf-8,[2]在JDBC连接中使用characterEncoding=utf-8。问题是它在openfi

我正在使用jdbc连接openfire和mysql。在DB连接URL中设置characterEncoding=UTF-8后,一切正常,utf8数据可以成功写入DB。然而,每当openfire重新启动时,编码就不再工作,保存到DB中的所有内容都变成了“?”

我在谷歌上搜索了很多,但是我找到的所有东西(比如和)都是关于初始设置的教程,我已经成功了。我认为成功初始设置的关键是[1]在数据库中使用utf-8,[2]在JDBC连接中使用characterEncoding=utf-8。问题是它在openfire重新启动后失败,我找不到任何解决方案


如果有人对如何解决这个问题有任何想法,请帮助。我相信我不是唯一一个遭受这种痛苦的人

我自己找到了解决办法

原来这是openfire.xml中保存的serverURL上的转义问题。显然,&字符被转义两次,并导致错误的url:

<serverURL>jdbc:mysql://localhost:3306/avmcdb?rewriteBatchedStatements=true&amp;amp;characterEncoding=UTF-8</serverURL> 
jdbc:mysql://localhost:3306/avmcdb?rewriteBatchedStatements=true&amp;characterEncoding=UTF-8
应该是

<serverURL>jdbc:mysql://localhost:3306/avmcdb?rewriteBatchedStatements=true&amp;characterEncoding=UTF-8</serverURL> 
jdbc:mysql://localhost:3306/avmcdb?rewriteBatchedStatements=true&characterEncoding=UTF-8
修改此行并重新启动openfire后,一切正常