您的位置:首页 > 数据库 > MySQL

关于mysql数据库中文乱码的一些总结

2014-05-15 16:03 225 查看
现在的项目数据库使用的是mysql,在window开发环境和linux生产环境都出现过乱码问题,下面主要总结下本人碰到的几次乱码问题:

1、win7下开发环境数据库乱码问题

在window下安装mysql时候,有一个步骤可以选在默认字符集,软件默认的是latin1,

若现在开发的项目是UTF-8,那么安装软件时候最好将此项设置为utf-8

由于是开发环境,我们也可以很方便的修改数据库字符集(由于本人项目工程字符集市UTF-8,所以下面均以UTF-8为例说明)

执行下面两个命令,查看数据库字符集

SHOW VARIABLES LIKE 'character%';

SHOW VARIABLES LIKE 'collation_%';

若字符集不是UTF-8,则执行命令修改:SET character_set_client = utf8 ; (character_set_client 为mysql参数,修改所有不是utf8的参数)

具体的可参考文章:http://www.blogjava.net/wldandan/archive/2007/09/04/142669.html

本地J2EE项目在连接mysql时候,在配置tomcat时候,修改conf/context.xml

(注意url中加 ?useUnicode=true&characterEncoding=utf-8 )

<Resource
validationQuery = "SELECT 1"
testWhileIdle = "true"
testOnBorrow = "true"
name="jdbc/mydb"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://192.168.19.23:3306/test?useUnicode=true&characterEncoding=utf-8"
username="root"
password="passwd"
maxActive="100"
maxIdle="30"
maxWait="10000"

/>


2、linux下数据库乱码问题

由于是生产环境,且数据库下面已经有投产的项目的实例,所以运维人员不敢轻易更改数据库字符集参数(不评论运维的工作,呵呵。。。)

下面说明linux服务器mysql数据库的参数,参数值大多为latin1。

在新建数据库实例、表的时候都指定是utf-8,执行完建表语句和初始化sql后,数据库存储的是中文,前台web界面展示的是乱码;

web界面向数据库插入数据,数据库存储的是乱码,前台web界面显示的是中文

(项目的数据库连接处指定了编码格式,所以存取能正常对应上,即为把中文存入数据库,去除的仍然是中文)

解决方式:

在链接mysql数据库的时候,指定默认的字符集

mysql -u root -p --default-character=utf8

然后再使用source命了执行sql文件,此时前台界面显示的就是中文了

此处需要特别注意:

sql文件的编码格式也要与项目的编码格式一致(UTF-8),否则插入数据库的还是乱码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: