关于解决mysql数据库乱码的问题

  最近在开发的过程中频繁的使用到了mysql'这款数据库,mysql的中文乱码问题一直让人头疼。以前遇到过几次,但是都一不小心就解决了,这次终于明白到底是怎么回事了。可能我下面说的这种解决方案只适合于我遇到的这种情况,同时这篇博客也只是对我个人问题的一个记载,可能对您没有帮助。

  中文乱码的根本原因在于字符的编码和解码格式不对,只要能保证数据的编码和解码格式一致就能解决乱码的问题。首先要先保证程序当中的中文字符是没有乱码的。

个人习惯使用utf8编码格式。在安装mysql数据库的时候要添加utf8编码。

其次,要把mysql的配置文件my.ini的编码改掉。注意,这里必须要改成utf8,在mysql中没有utf-8这种格式。

重启mysql的服务才能生效。

创建数据库时候也要指定utf8编码格式。

也可以使用命令行的方式来设置编码  CREATE database testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

创建表的时候也要指定数据的编码格式。

create table `Course`
(
`id` int primary key,
`name` varchar(50)
)DEFAULT CHARSET=utf8;

create table `UserInfo`
(
`id` int primary key,
`password` varchar(50),
`userName` varchar(50) ,
`phone` varchar(50) ,
`email` varchar(50)
)DEFAULT CHARSET=utf8;

保证这么几个步骤,数据库的乱码问题就得到了解决。

附:mysql常用的查看编码的格式

一、查看MySQL数据库服务器和数据库MySQL字符集。

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> show variables like '%char%';  
+--------------------------+-------------------------------------+------  
| Variable_name            | Value                               |......  
+--------------------------+-------------------------------------+------  
| character_set_client     | utf8                                |......   -- 客户端字符集  
| character_set_connection | utf8                                |......  
| character_set_database   | utf8                                |......   -- 数据库字符集  
| character_set_filesystem | binary                              |......  
| character_set_results    | utf8                                |......  
| character_set_server     | utf8                                |......   -- 服务器字符集  
| character_set_system     | utf8                                |......  
| character_sets_dir       | D:MySQL Server 5.0sharecharsets |......  
+--------------------------+-------------------------------------+------

 二、查看MySQL数据表(table)的MySQL字符集。

1
2
3
4
5
6
mysql> show table status from databasename(这里写的是你的数据库的名字) like '%countries%';  
+-----------+--------+---------+------------+------+-----------------+------  
Name      | Engine | Version | Row_format | Rows | Collation       |......  
+-----------+--------+---------+------------+------+-----------------+------  
| countries | InnoDB |      10 | Compact    |   11 | utf8_general_ci |......  
+-----------+--------+---------+------------+------+-----------------+------

 三、查看MySQL数据列(column)的MySQL字符集。

1
2
3
4
5
6
7
8
9
10
mysql> show full columns from tablename(这里是你的数据表的名字);  
+----------------------+-------------+-----------------+--------  
| Field                | Type        | Collation       | .......  
+----------------------+-------------+-----------------+--------  
| countries_id         | int(11)     | NULL            | .......  
| countries_name       | varchar(64) | utf8_general_ci | .......  
| countries_iso_code_2 | char(2)     | utf8_general_ci | .......  
| countries_iso_code_3 | char(3)     | utf8_general_ci | .......  
| address_format_id    | int(11)     | NULL            | .......  
+----------------------+-------------+-----------------+--------
原文地址:https://www.cnblogs.com/1102whw/p/6837737.html