我使用jdbc将openfire与mysql连接起来。在数据库连接URL中设置 characterEncoding = UTF-8 后,一切正常,utf8数据可以成功写入数据库。然而,每当openfire重新启动编码不再有效时,保存到DB中的所有内容都会变为" ???"。
我已经搜索了很多内容,但我找到的所有内容(如this和this)主要是初始设置教程,我已经成功了。我认为成功初始设置的关键是[1]你的db中有utf-8,而[2]在你的JDBC连接中使用了characterEncoding = UTF-8。问题是它在openfire重启后失败了,我无法找到任何解决方案。
如果有人对如何解决这个问题有任何疑问,请帮忙。我相信我并不是唯一受此影响的人。
答案 0 :(得分:1)
我自己找到了解决方案。
结果发现它是openboot.xml中保存的serverURL上的转义问题。显然&字符被转义两次并导致错误的网址:
<serverURL>jdbc:mysql://localhost:3306/avmcdb?rewriteBatchedStatements=true&amp;characterEncoding=UTF-8</serverURL>
应该是
<serverURL>jdbc:mysql://localhost:3306/avmcdb?rewriteBatchedStatements=true&characterEncoding=UTF-8</serverURL>
修改此行并重新启动openfire后,一切正常。