阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Openfire在使用MySQL数据库后的中文乱码问题解决

178次阅读
没有评论

共计 1296 个字符,预计需要花费 4 分钟才能阅读完成。

Openfire 是一个非常不错的 IM 服务器,而且是纯 Java 实现,具有多个平台的版本,他的数据存储可以采用多种数据库,如 MySQL,Oracle 等。

在实际使用时大家遇到最多的就是采用 MySQL 数据库后的中文乱码问题,这个问题十分有趣,而且从现象上可以看出 Openfire 内部的一些机制。

实际问题是这样的:首先启动 Openfire 服务器,然后利用客户端或直接登录到后台新建一个帐户,为该帐户指定一些中文的属性,如姓名等。如果不重启服务器,你永远不会觉得有什么不对的地方,因为所有的中文显示都是正常的。接下来重启一下 Openfire,再用建立的帐号登录客户端或进入后台管理端查看,会发现所有的中文全都变成了问号。登录到数据库中进行查看,发现所有的中文字符也均为问号,这说明了两个问题:

  1. Openfire 具有应用层缓存
  2. 数据库编码存在问题

解决办法其实也很简单,首先要保证你为 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;

Openfire 的详细介绍 :请点这里
Openfire 的下载地址 :请点这里

相关阅读

CentOS 下 Openfire 详细安装过程 http://www.linuxidc.com/Linux/2012-09/69539.htm

CentOS 5.4 下基于 Jabber/XMPP 协议的 Openfire 服务器配置笔记 http://www.linuxidc.com/Linux/2012-02/55497.htm

Ubuntu 12.04 安装 Openfire http://www.linuxidc.com/Linux/2012-07/64945.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1296字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中