Openfire:脱机的UTF-8编码消息保存错误

时间:2014-08-18 08:11:04

标签: openfire


我们使用Openfire 3.9.3。它的MySql数据库使用utf8_persian_ci排序规则,在openfire.xml中我们有:

...<defaultProvider> 
  <driver>com.mysql.jdbc.Driver</driver>  
  <serverURL>jdbc:mysql://localhost:3306/openfire?useUnicode=true&amp;amp;characterEncoding=UTF-8</serverURL>  
  <mysql> 
    <useUnicode>true</useUnicode> 
  </mysql> ....

问题是包含波斯字符(UTF-8编码)的离线消息被保存为问号字符串。例如,سلام(在波斯语中表示你好)存储并显示为????。

1 个答案:

答案 0 :(得分:5)

MySQL没有正确的Unicode支持,这使得支持非西方语言的数据变得困难。但是,MySQL JDBC驱动程序有一个解决方法,可以通过添加

来启用
?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8

到JDBC驱动程序的URL。您可以编辑conf / openfire.xml文件以添加此值。

注意:如果用于配置JDBC URL的机制是基于XML的,则需要使用XML字符文字&amp;分隔配置参数,因为&符号是XML的保留字符。

还要确保您的数据库和表格具有utf8编码。