openfire离线消息中文乱码,归根道理是mysql的乱码问题,可以连接到自己的数据库查询存储的数据。
解决方案:
第一步:
修改database的字符集
alter database openfire default character set utf8 default collate utf8_general_ci;
第二步
修改jdbc连接串:
如果是初始化openfire的时候,添加连接串
jdbc:mysql://127.0.0.1:3306/openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8
如果openfire已经初始化,需要修改openfire的配置文件,修改/opt/openfire/conf/openfire.xml,
<serverURL>jdbc:mysql://127.0.0.1:3306/openfire?rewriteBatchedStatements=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8</serverURL>
第三步:
如果修改database和客户端连接串编码之后发现还有乱码,需要去查询整个mysql的编码集
show variables like 'character%';
如果发现
character_set_server 不是utf8编码,需要修改mysql的配置文件/etc/my.cnf
[client]标签加入
default-character-set=utf8
[mysqld]标签下加入
character-set-server=utf8
collation-server=utf8_general_ci
[mysql.server]标签加入
default-character-set=utf8
mysql 默认没有[client]标签和[mysql.server]标签,需要自己手动添加。
重启mysql
systemctl restart mysql
重启mysql之后执行:
show variables like 'character%'; 发现所有编码集已经修改为utf8。
测试离线消息发现已经没有乱码,查询ofOffline表
网友评论