MySQL 数据乱码解决处理

在开发中,我们会遇到很多种乱码问题,有页面到后台乱码,有后台到数据库乱码,有后台后页面乱码等等,在这一章中,我们将解决后台到数据库乱码处理。

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 :

《MySQL 数据乱码解决处理》
《MySQL 数据乱码解决处理》

linux :

《MySQL 数据乱码解决处理》
《MySQL 数据乱码解决处理》

可以看出数据库安装之后,默认的配置字符串是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数据库,配置立即生效,然后我们看到的结果应该是如下:

《MySQL 数据乱码解决处理》
《MySQL 数据乱码解决处理》

    原文作者:宋骞
    原文地址: https://zhuanlan.zhihu.com/p/30023799
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞