解决openfire在使用MySQL数据库后的中文乱码问题(转)

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

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

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

openfire具有应用层缓存 
数据库编码存在问题 
解决办法其实也很简单,首先要保证你为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;

时间: 2024-10-14 09:03:02

解决openfire在使用MySQL数据库后的中文乱码问题(转)的相关文章

MySQL数据库中的中文乱码解决方案。

数据库中输入中文容易出现乱码?(乱码问题本源:参见http://blog.51cto.com/12042068/2115021) 解决方法:1.在建表建库的时候就指定默认编码  utf8. CREATE TABLE table_name (column_name column_type) default charset=utf8;(注意";"之前的部分.明确规定字符集) 2.通过2个参数对比来说明不同客户端出现乱码的解决方法: 首先关注两个参数:character_set_client

php 保存到mysql数据库中的中文乱码

近期又php项目,乱码是个头痛的问题 解决方法: 1,php 文件中 添加 header(“Content-Type: text/html; charset=utf-8"); 2,需要做数据库操作的php程序前加mysql_query("set names '编码'");,编码和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那 mysql编码就是 utf8,这样插入或检索数据时就不会出现乱码了 mysql_query("

MySQL数据库like查询中文出现不准确的解决方法

2013-02-18 1,502阅 评论( 暂无评论 ) 更多0 Mysql数据库like查询中文出现不准确的解决方法,中文检索有时候有点蛋疼,Mysql数据库like查询中文有时候会出现不准确.而且,在进行like检索时,有时候会返回一些与查询词不相关的记录,如查找 “%s%” 时,返回的结果中可能有中文字符,却没有s字符存在,这与数据库中文编码规则有关. 如希望查找title中含有字母s的所有新闻: select * from test.news where title like '%s%'

[转]mysql导入导出数据中文乱码解决方法小结

本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 代码如下: mys

Oracle数据库PLSQL的中文乱码显示全是问号

缘由: 小师妹周末叫我帮她重装数据库,这么大好的周末时光不出去玩儿,给她装数据库这不是很蛋疼么. 我问她为什么要重装,她说:数据存入数据库后,中文字符有乱码,一定是我上次给她安装数据库的时候 有问题.当初为了给她安装个数据库,可是费了九牛二虎之力,64位数据库,32位数据库客户端来回折腾了 两天才弄好,我可不想再重新给她弄.在网上找到了个解决方案,一下子就把乱码的问题解决了. // http://www.2cto.com/database/201407/313317.html 我的Oracle是

安装mysql数据库后,在服务中没有mysql的启动项

我用的是phpstudy安装的mysql数据库,但是在服务中没有mysql的启动项(不影响使用),原因是在安装mysql的时候没有安装mysql 服务 解决办法如下: 1. 用管理员身份运行cmd.exe(注意管理员身份!) 2. 进入mysql的bin目录 3. 安装mysql服务 安装服务:mysqld --install (卸载服务:mysqld --remove) 安装运行结果: 4. 查看本地服务成功出现mysql启动项

解决Linux系统下Mysql数据库中文显示成问号的问题

当我们将开发好的javaWEB项目部署到linux系统上,操作数据库的时候,会出现中文乱码问题,比如做插入操作,发现添加到数据库的数据中文出现论码,下面就将解决linux下mysql中文乱码问题! 打开Linux窗口,启动mysql. 连接mysql输入show variables like '%char%'; 出现如下图,这样的话在linux下操作mysql会出现中文乱码,所以我们要解决这个问题. 关闭mysql,找到 /etc/my.cnf 文件 3.1 如果没有找到my.cnf文件,就从

解决mysql数据库不能支持中文的问题

迁移了一套内部系统(confluence)之后,页面打开,发现全是问号乱码了.分析原因: 我是按照如下方式创建数据库的: mysql> create database confluence  character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) mysql> grant all on conflence.* to 'confluence'@'%' identified by '456456'; Quer

php从mysql数据库中获取数据乱码(已解决)

问题: 数据库里是中文,在网页上通过查找数据库显示如下: img/??.png 数据库里面数据为: img/我的.png 解决: 首先你的php网页要是UTF-8 <?php header("Content-Type:text/html;charset=UTF-8"); ?> 连接数据库之后插入如下代码: $program_char = "utf8" ; mysqli_set_charset( $con , $program_char ); 如果你是其他