[openfire]中文乱码

使用openfire时,突然发现我的离线消息中文变成了问号,而在线的消息却很正常,于是去看数据库ofofline那个数据库,因为他是记录离线消息的,发现里面存的就是乱码,这就肯定是Mysql数据库的问题了。于是网上找,发现这个还挺全http://nopainnogain.javaeye.com/blog/737361;其提出

解决办法其实也很简单,首先要保证你为openfire创建的数据库编码是utf8的,建表语句如下:

create database openfire default character set utf8 default collate utf8_general_ci

当你原来就创建好数据库时,你可以用:

 alter database openfire default character set utf8 default collate utf8_general_ci;

其次,在初始化openfire数据库,即第一次配置openfire服务器时,在连接数据库那里的连接串要加入字符编码格式,必须在连接里增加UTF8的编码要求,连接字符串设置如下:

jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncoding=utf8

如果已经安装完成,这个配置也是可以改动的,直接到openfire的安装目录下,找到conf/openfire.xml这样一个文件,打开找到如下的XML节,修改其中的serverURL即可

<database>
<defaultProvider>
<driver>com.mysql.jdbc.Driver</driver>
<serverURL>jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&amp;characterEncoding=utf8</serverURL>

注意:由于&具有特殊含义,因此原&符号必须被转义为&amp;

   我直接搞了首先,没好,又改了其次,发现就根本不往数据库里写了,我靠我郁闷了,于是我觉得其次应该是有问题的,后来直接改了maysql的配置,不用默认的编码用utf-8编码,重写安装openfire就ok了,但是如果是已经有很多数据你再去安装那不是要奔溃了吗,于是

结论:安装数据库的时候最好直接把编码改为utf-8的,这样创建database、table和字段就会按默认的编码进行编码。这样就不会出现这样中文乱码的问题了。

困难是老天给我们提高的机会,坚定不移勇敢地去攻克,不要退缩,加油!
原文地址:https://www.cnblogs.com/merlini/p/3884820.html