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

合集下载

Linux平台下修正MySQL中文乱码问题

Linux平台下修正MySQL中文乱码问题

Linux平台下修正MySQL中文乱码问题操作系统环境:
RHEL4.6、MySQL 4.1.22
现象:
在此电脑上安装了Tomcat作为web服务器,部署了一个项目,通过jdbc连接到mysql数据库。

但是发现中文输入输出乱码现象。

解决步骤:
1. 找到mysql的配置文件
网上说,mysql的配置文件就是/etc/f。

但是这个文件并不一定存在,由于你可能采取的MySQL安装方式跟网上所说的不一样,就不一定能够找得到/etc/f。

因此,你需要使用find命令查找cnf文件。

记得不要去找f因
2. 打开f修改编码
vi /etc/f --打开f文件
显示结果如下:
在[mysqld]下添加
default-character-set=GBK
在[client]下添加
default-character-set= GBK
3. 重启mysql
根据你安装mysql的方式的不同,采用不用的命令来重启你的mysql。

如果你配置过使用mysqld自启动方式,可以执行“/etc/rc.d/init.d/mysql restart”来重启。

或者你把mysql配置成系统服务的方式,你可以执行“service mysql restart”。

mysql数据库乱码问题

mysql数据库乱码问题

数据库读出乱码解决一、分析常见数据库问题修改MYSQL数据库,数据表,字段的编码(解决JSP乱码)要解决JSP乱码,首先就要了解JSP乱码的原因1.架设服务器安装MYSQL时的会让你选择一种编码,如果这种编码与你的网页不一致,可能就会造成JSP页面乱码2.在PHPMYADMIN或mysql-front等系统创建数据库时会让你选择一种编码,如果这种编码与你的网页不一致,也有可能造成JSP页面乱码3.创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码4.创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成JSP 页面乱码5.用户提交JSP页面的编码与显示数据的JSP页面编码不一致,就肯定会造成JSP页面乱码.如用户输入资料的JSP页面是big5码,显示用户输入的JSP页面却是gb2312,这种100%会造成JSP页面乱码6.字符集不正确要注意:1.平时你在某些网站看到的文字可能有几种编码,如你看到一个繁体字,它有可能是big5编码,也有可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点.如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法就是(1)将网站编码设为utf-8,这样可以兼容世界上所有字符,(2)如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为GBK,GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK7.JSP连接MYSQL数据库语句指定的编码不正确8.JSP页面没有指定数据提交的编码,就会造成乱码:所以,JSP乱码的原因无非就是以上几种,知道原因之后,要解决JSP乱码的方法也容易多了我们一一来表达:1.如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题2.修改数据库编码,如果是数据库编码不正确:可以在phpmyadmin执行如下命令:ALTER DATABASE`test`DEFAULT CHARACTER SET utf8COLLATE utf8_bin以上命令就是将test数据库的编码设为utf83.修改表的编码:ALTER TABLE`category`DEFAULT CHARACTER SET utf8COLLATE utf8_bin以上命令就是将一个表category的编码改为utf84.修改字段的编码:ALTER TABLE`test`CHANGE`dd``dd`VARCHAR(45)CHARACTER SET utf8COLLATEutf8_bin NOT NULL以上命令就是将test表中dd的字段编码改为utf85.如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可,//这个正确就无问题了6.这种情况也是修改页面charset即可,7.在JSP连接数据库的语句中,private String url="jdbc:mysql://localhost/"+DB_NAME+"user="+LOGIN_NAME+"&password="+LOGIN_PASSWORD+"&characterEncoding=GBK";//相键要看characterEncoding8.这种乱码的情况,只需在页面开头加上request.setCharacterEncoding("GBK");指定提交的即可注意:按照以上方法修改以后只能保证你新插入的数据不会乱码,举个例:如果你用户已提交的数据是BIG5,你却想通过以上方法改为可以在GB2312的网页正确显示是不可能的,这种文字内码的变换只能通过另写程序来解决,请其它相关文章总结:先要判断JSP乱码是插入数据库之后乱码,还是JSP页面刚提交过来就乱码了,如果JSP 刚接收上一页面的数据显示就乱码了,肯定是字符集不对,可者没有加request.setCharacterEncoding("GBK");如果是数据库的原因就参考上面的2,3,4种方法可能是编码问题这样连接一下数据库看看jdbc:mysql://localhost:3306/xxxx useUnicode=true&characterEncoding=UTF-8看看能否有效果二、乱码案例使用MYSQL数据库,用JSP去连接结果发现出了很多问题,主要集中在乱码显示上面,实际开发中,想必这类问题是见怪不怪了。

mysql数据库乱码

mysql数据库乱码

彻底解决mysql中文乱码的办法MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如php)的连线语系设定问题强烈建议使用utf8!!!! utf8可以兼容世界上所有字符!!!!Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:mysql不能插入中文默认的是客户端和服务器都用了latin1,所以会乱码。

解决方案:mysql>user mydb;mysql>alter database mydb character set utf8;!另一种方法是直接修改默认的Mysql配置文件在debian环境下,彻底解决mysql无法插入中文和中文乱码的办法上面提到了用临时方法更改数据库的字符集设置,显示中文,但是后来发现在有的系统下并不能成功,比如我用的debian 7.0,找了好久终于找到一个适合debian系统的解决方案,debian 7.0下测试成功,其他诸如修改client和mysql加入default-character-set=utf8的方法之类的,只适用与5.5以前的系统!终极决绝方案,一劳永逸:debian下mysql的字符串修改为utf8(参考:rainysia的专栏)一、进入mysql(mysql -uroot -p),查看当前数据库字符集(status;)二、查看当前系统版本(lsb_release -a)Mysql不能插入中文三、#vim /etc/mysql/f 。

(5.5以前系统)在【client】下面加入default-character-set=utf8在【mysqld】下面加入default-character-set=utf8Notice:注意如果修改后不能启动报错试试把default-character-set=utf8改为character_set_server=utf8,仅仅加入到mysqld下面的.client就不需要加了四、#vim /etc/mysql/f 。

解决mysql字体乱码问题

解决mysql字体乱码问题

解决MySQL 5.5的中文乱码问题
1.在mysql压缩目录下,有一堆的参数配置文件,比如:my-innodb-heavy-4G.ini,复制一下这个文件,自己改下名字,比如叫:my.ini……
1.在mysql压缩目录下,有一堆的参数配置文件,比如:my-innodb-heavy-4G.ini,复制一下这个文件,自己改下名字,比如叫:my.ini
2.打开my.ini文件,增加如下参数:[client]:增加default-character-set=utf8参数
以下是代码片段:
[client]
#password = [your_password]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8
[mysqld]:增加如下3个参数
以下是代码片段:
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
# generic configuration options
port = 3306
socket = /tmp/mysql.sock
3.设置完成后,重启下mysql服务
4.连接上你的数据库之后,输入命令:SHOW VARIABLES LIKE '%char%';即可查看到现在你的数据库所使用的字符集了:。

访问MySQL数据库时中文乱码问题分析及解决

访问MySQL数据库时中文乱码问题分析及解决

访问MySQL数据库时中文乱码问题分析及解决使用MySQL保存中文数据时,经常会遇到乱码问题。

产生乱码的原因很多,在笔者以为对MySQL的字符集处理已经很有了解的时候,使用C#编程时,竟再一次遇到了乱码。

联想到前几天一位同事在使用JDBC访问MySQL时遇到的中文乱码问题,决定对MySQL中文乱码问题的产生场景进行一次总结。

一、错误读出现象:一个已经存在数据的MySQL数据库,该数据库的数据用系统中其它软件、网页查看均正常,使用MySQLcc之类的客户端查看也正常,可是在新写的网页中总是显示乱码。

分析:其它系统都可以正常查看数据,说明数据本身是没有问题的。

在网页中显示乱码,一定是网页的编码字符集和获取到的数据的编码字符集不一至。

比如数据库的字符集是UTF 8的,而网页的字符集是gb2312的,那么网页就会把UTF8编码的字体串当作gb2312的来处理,结果产生乱码。

解决办法:在连接数据库时,设定连接字符集,使连接字符集和当前网页或客户端程序使用的字符集一致。

可以使用MySQL的Set Names指令设定连接字符集。

假设网页的字体集为gb2312。

在连接MySQL后,在连接上执行如下SQL语句:Set Names ‘gb2312’在以后所有这个连接上的查询,MySQL都会自动把数据库中的数据转换成gb2312编码格式传过来。

mysqli_query($db,"SET NAMES 'gb2312'")二、错误写入现象:一个网页或程序向一个MySQL数据库中写数据,写完后,这个网页或程序自己可以正常读取数据,而从其它客户端或网页中读取数据都是乱码。

分析:其它的正常的客户端出现乱码,说明数据库中的字符编码不对。

写数据的那个网页能正常读取,是因为写和读都用了错误的编码格式,将错就错,反而能读出正确的数据了。

比如数据库中设定的字符集为UTF8,而网页使用gb2312编码执行了插入数据的SQL,那么MySQL就会把这些gb2312的编码当成是UTF8的编码写进数据库。

中文乱码解决方案

中文乱码解决方案

中文乱码解决方案中文乱码问题是指在使用计算机软件或操作系统时,中文字符显示为乱码或其他非预期字符的情况。

中文乱码问题通常出现在以下几种情况下:1.编码不一致:中文乱码问题最常见的原因是编码不一致。

计算机中使用的编码方式有很多种,如UTF-8、GB2312、GBK等。

如果文件的编码方式与软件或操作系统的默认编码方式不一致,就会导致中文乱码。

解决该问题的方法是将文件的编码方式转换为与软件或操作系统一致的方式。

2.字体显示问题:中文乱码问题还可能与字体显示有关。

如果计算机中没有安装支持中文的字体,或字体文件损坏,就会导致中文字符显示为乱码或方框。

解决该问题的方法是通过安装正确的字体文件或修复字体文件来解决。

3.网页编码问题:在浏览网页时,如果网页的编码方式与浏览器的默认编码方式不一致,也会导致中文乱码。

解决该问题的方法是在浏览器中手动设置网页编码方式,或在网页头部指定正确的编码方式。

4.数据传输问题:中文乱码问题还可能与数据传输有关。

在进行数据传输时,如果数据的编码方式与传输协议或接收端的要求不一致,就会导致中文乱码。

解决该问题的方法是在数据传输的过程中进行编码转换,或在接收端进行适当的解码操作。

下面是一些常用的解决中文乱码问题的方法:3.设置浏览器编码方式:在浏览器的设置中,可以手动指定网页的编码方式。

可以尝试不同的编码方式,找到正确的方式显示中文字符。

4.检查数据传输设置:如果中文乱码问题是在数据传输过程中出现的,可以检查传输的设置是否一致。

比如,在进行数据库连接时,可以设置数据库的编码方式与应用程序的编码方式一致。

5.使用专业工具:如果以上方法无法解决中文乱码问题,可以考虑使用专业的中文乱码解决工具。

这些工具可以自动检测和修复中文乱码问题,提高处理效率。

总结起来,解决中文乱码问题需要确定问题的原因,然后采取相应的方法进行修复。

在处理中文乱码问题时,尽量使用标准的编码方式和字体文件,避免使用非标准或自定义的编码方式。

怎样解决MySQL中文显示乱码

怎样解决MySQL中文显示乱码

怎样解决MySQL中文显示乱码当你的MySQL返回的字符串的编码格式(字符集)与你的客户工具程序(mysql, php, query browser, ...)当前使用的字符集不同时,就会造成乱码。

MySQL中默认字符集的设置有四级:服务器级,数据库级,表级。

最终是字段级的字符集设置。

注意前三种均为默认设置,并不代码你的字段最终会使用这个字符集设置。

所以我们建议要用show create table table ; 或show full fields from tableName;来检查当前表中字段的字符集设置。

专职优化、域名注册、网站空间、虚拟主机、服务器托管、vps主机、服务器租用的中国信息港来为你做详细介绍!MySQL 中关于连接环境的字符集设置有 Client端,connection, results 通过这些参数,MySQL就知道你的客户端工具用的是什么字符集,结果集应该是什么字符集。

这样MySQL就会做必要的翻译,一旦这些参数有误,自然会导致字符串在转输过程中的转换错误。

基本上99%的乱码由些造成。

乱码后需要检查的信息。

1. 数据库表中字段的字符集设置。

show create table TableName或show full columns from tableNamemysql> show create table t1;+-------+------------------------------------| Table | Create Table+-------+------------------------------------| t1 | CREATE TABLE `t1` (`id` int(11) NOT NULL,`c1` varchar(30) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk |+-------+------------------------------------1 row in set (0.00 sec)mysql> show full columns from t1;+-------+-------------+----------------+------+-----+-| Field | Type | Collation | Null | Key |+-------+-------------+----------------+------+-----+-| id | int(11) | NULL | NO | PRI || c1 | varchar(30) | gbk_chinese_ci | YES | |+-------+-------------+----------------+------+-----+-2 rows in set (0.00 sec)mysql>2. 当前联接系统参数show variables like 'char%'mysql> show variables like 'char%';+--------------------------+----------------| Variable_name | Value+--------------------------+----------------| character_set_client | gbk| character_set_connection | gbk| character_set_database | latin1| character_set_filesystem | binary| character_set_results | gbk| character_set_server | latin1| character_set_system | utf8| character_sets_dir | C:/Program File+--------------------------+----------------8 rows in set (0.00 sec)mysql>1. 中文,请确保表中该字段的字符集为中文兼容:big5 | Big5 Traditional Chinesegb2312 | GB2312 Simplified Chinesegbk | GBK Simplified Chineseutf8 | UTF-8 Unicode2. 确保,联接参数与这个字段字符集一致,你可以用 set name 'charsetname';比如,set name 'gbk';这条命令会同时修改character_set_client,character_set_connection,character_set_results (如果你的这架MySQL中都为中文,则你可以在my.ini或f中加上或修改这个参数, 参数文件修改后需重启MySQL服务)[mysql]default-character-set=gbk3. PHP 乱码,同样 mysql_query("set name 'gbk'"); 其它API也类似。

MySQL中的字符集转换与乱码问题解决方法

MySQL中的字符集转换与乱码问题解决方法

MySQL中的字符集转换与乱码问题解决方法在使用MySQL数据库时,我们经常会遇到字符集转换和乱码的问题。

正确地处理字符集转换和乱码是确保数据库存储和检索数据的关键。

本文将探讨MySQL 中的字符集转换与乱码问题,并提供解决方法。

一、字符集与编码首先,我们需要了解字符集和编码的概念。

字符集是一组字符的集合,而编码则是将字符集中的字符映射到二进制数据的规则。

常见的字符集有ASCII、Unicode和UTF-8等,而编码方式有UTF-8、GBK、Latin1等。

在MySQL中,字符集用来定义存储和处理文本数据的规则,而编码则是实际使用的二进制编码。

如果字符集和编码不一致,就会导致数据存储和检索时出现乱码问题。

二、MySQL中的字符集设置在MySQL中,字符集设置是通过修改服务器、数据库、表和列的字符集属性来实现的。

1. 服务器字符集设置在MySQL配置文件(f)中,可以设置服务器的默认字符集和排序规则。

通过编辑f文件,找到[mysqld]节点,在其下方添加如下内容:```shell[mysqld]...character_set_server=utf8mb4collation_server=utf8mb4_unicode_ci...```这样,服务器的默认字符集就被设置为utf8mb4,并且排序规则为utf8mb4_unicode_ci。

2. 数据库字符集设置在MySQL中,每个数据库都有一个特定的字符集和排序规则。

可以通过以下命令创建一个指定字符集的数据库:```sqlCREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci;```这样,创建的数据库就拥有utf8mb4字符集和utf8mb4_unicode_ci排序规则。

3. 表和列的字符集设置在创建表时,可以指定表和列的字符集和排序规则。

例如,创建一个使用utf8mb4字符集的表:```sqlCREATE TABLE table_name (col1 VARCHAR(255) CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci,col2 TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci);```这样,表和列的字符集就被设置为utf8mb4,并且排序规则为utf8mb4_unicode_ci。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

解决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;characterEncodi ng=utf8</serverURL>
注意:由于&具有特殊含义,因此原&符号必须被转义为&amp;。

相关文档
最新文档