在开发中,我们会遇到很多种乱码问题,有页面到后台乱码,有后台到数据库乱码,有后台后页面乱码等等,在这一章中,我们将解决后台到数据库乱码处理。
MySQL是一个跨平台的数据库,我们在处理后台到MySQL乱码中,区分是Linux,还是Windows,其实,两种平台处理的方式基本致,现在我们来看看如何分析是后台到数据库乱码。
我们先来看看创建数据库和创建表, 如下:
drop database if exists dbname;
create database dbname default charset utf8 collate utf8_general_ci;
drop table if exists `tabName`;
create table `tabName`
(
`id` int not null auto_increment,
`col_1` varchar(20) not null,
`col_2` double not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
假如,我们的后台获取的数据都是正常的utf8字符,我们的表以及数据库在创建的时候,也是设置为utf8的字符集,但是在我们后台持行insert的时候,发现进入数据库的数据是乱码,这时候,我们就可以确定,数据库的字符不对,我们可以使用以下命令去查看。
mysql -uroot -p
show variables like 'character%';
windows :
linux :
可以看出数据库安装之后,默认的配置字符串是latinl格式的,而我们建库建表时,使用的是utf8字符,这就导致了项目中mysql sdk在持行insert时,会出现数据乱码,我们只要把数据库默认编码改成utf8字符,即可解决此类问题。
windows:
notepad C:\Program Files (x86)\MySQL\MySQL Server 5.1\my.ini
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
linux:
vim /etc/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
完成上述工作后,我们可以重启我们的mysql数据库,配置立即生效,然后我们看到的结果应该是如下: