一、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;