我们使用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;characterEncoding=UTF-8</serverURL>
<mysql>
<useUnicode>true</useUnicode>
</mysql> ....
问题是包含波斯字符(UTF-8编码)的离线消息被保存为问号字符串。例如,سلام(在波斯语中表示你好)存储并显示为????。
答案 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编码。