Mysql数据库中文乱码
查看默认编码
show variables like "character_set_%"
修改默认编码
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
查看连接编码
show variables like "collation_%";
修改连接编码
set collation_connection=utf8_general_ci;
set collation_database=utf8_general_ci;
set collation_server=utf8_general_ci;
修改后查看编码
MariaDB [(none)]> show variables like "character_set_%";
+--------------------------+----------------------------+
| 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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
MariaDB [(none)]> show variables like "collation_%";
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
注意:
修改默认字符编码不会修改原有数据库的编码。
请用 show database 数据库名;和 show create table 表名;查看一下原有数据库和表的字符集是否为UTF8 ,
如果已经创建完成的表或者数据库通过ALTER进行修改
---修改某一个数据库
ALTER database sql_test character set utf8;
---修改某一个表
ALTER table sql_test character set utf8;
创建数据库 数据表指定编码
/*创建数据库的时候指定编码格式*/
MariaDB [lhc]> create database python_test character set utf8;
/*创建表的时候指定编码格式*/
MariaDB [lhc]> create table python_test(
-> id int(11),
-> name varchar(50) character set utf8,
-> class_time int(11),
-> PRIMARY KEY(id)
-> )DEFAULT CHARSET=utf8;
修改配置文件方法如下:
打开 /etc/my.cnf 搜索default-character-set,将后面的字符集修改为UTF8,注意要修改两个地方,一个事客户端的,一个是服务端的。
指令:`vim /etc/my.cnf`,在 [mysqld] 下面添加一行代码
character_set_server=utf8
......
如果没有找到my.cnf文件,就从 /usr/share/mysql/ 中将 my-meduim.cnf 复制到 /etc/ 下并重命名为 my.cnf; cp/usr/share/mysql/my-medium.cnf /etc/my.cnf。
然后保存,重启mysql服务.