一、mysql乱码的关键原因

1.如果在java中处理中文字符正常,而在dos控制台cmd

client中显示乱码,这一定是character_set_Client字符集的问题。

2.如果字段长度设置够长,但插入中文字符时提示com.mysql.jdbc.MysqlDataTruncation: Data

truncation: Data too long for

column错误,这一定是是character_set_database字符集的问题。

3.在jsp中,出现乱码不光与前两个字符集设置有关,还与character_set_server、character_set_connection、character_set_results有关。

二、解决相应的字符集设置

1.首先查看MYSQL相应的字符集是什么

在dos控制台输入命令:mysql -uroot

-padmin回车,进入到mysql>提示符界面,输入命令:show variables like

"%char%",看到如下显示:

Variable_name Value
character_set_client gbk
character_set_connection gbk
character_set_database gbk
character_set_results gbk
character_set_server gbk
character_set_system utf8
character_sets_dir "c:\……\Mysql\Mysql server 5.0\share\charsets\

如果不是,将进行相应修改。

2.修改办法

(1)修改character_set_client为gbk

用记事本打开my.ini(MySQL Server Instance Configuration

文件,在c:\……\Mysql\Mysql server 5.0下)进行修改

# CLIENT SECTION

[client]

port=3306

[mysql]

default-character-set=gbk 此处要修改成gbk,gbk不要用大写,mysql使用的字符集要用小写,jsp上使用的字符集大写。此处如果大写,不光起不到作用,可能导致mysql无法再次启动。

# SERVER SECTION

[mysqld]

default-character-set=gbk 此处要修改成gbk

(2)修改character_set_server为gbk

找到data目录中相应数据库目录下的db.opt配置文件,用记事本打开,修改为:

default-character-set=gbk

default-collation=gbk_chinese_ci

如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题

(3)修改character_set_connection为gbk

在数据库连接串中指定字符集

URL=jdbc:mysql://yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk

注:在mysql4.1.0版

要加useUnicode=true&characterEncoding=gbk

如果是5.0版以上的,加不加都是没有关系的!

(4)修改character_set_database为gbk

在创建数据库时指定字符集

create database yourDB CHARACTER SET gbk;

如果是MYSQL数据库编码不正确: 可以在MYSQL执行如下命令: ALTER DATABASE `test` DEFAULT

CHARACTER SET gbk COLLATE gbk_chinese_ci

修改MYSQL表的编码:ALTER TABLE `category` DEFAULT CHARACTER SET gbk

COLLATE gbk_chinese_ci

修改字段的编码:ALTER TABLE `test` CHANGE `dd` VARCHAR(

45 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL

(5)在dos命令上要设置

set names gbk

好了,经过检查上面四个方面的设置,应该 OK 了!不会出现诸如:com.mysql.jdbc.MysqlDataTruncation:

Data truncation: Data too long for column等问题.

总结如下:

1.在安装数据库的过程中将默认的拉丁文-->gbk。

2.在创建数据库时设置选择gbk或者gb2312。

3.Mysql安装目录下的my.ini文件,将 "default-character-set=xxxxx"

中的xxxxx改成GBK或者gb2312。

4.Mysql安装目录下的\data\databasename(数据库名)\db.opt文件打开

default-character-set=gbk

default-collation=gbk_chinese_ci; 如果上面不是gbk和gbk_chinese_ci则改成支持中文的GBK或者gb2312。

5.进入Mysql的dos命令下:进入某数据库后 show full columns from tablename

;查看数据类型,如果不是支持中文的类型则执行alter table tablename convert to character

set gbk 。

6.在创建数据库时(用命令创建时)create database databasename CHARACTER SET

gbk;