mysql数据库 中文乱码_数据库 MySQL中文乱码解决办法总结

MySQL中文乱码解决办法

前言:

MySQL是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况。下面就来介绍一下如何彻底解决数据库中文乱码情况。

1、中文乱码

1.1、中文乱码

create table user(name varchar(11)); # 创建user表

insert into table user("carl"); # 添加数据

select * from user;

1879c18d2b66ab55c55c77e45eb0a848.png

insert into user value("哈哈");

无法插入中文字符:

5be0e98a91e55cc2cffcc5257b2f52fb.png

1.2、查看表字符编码

mysql> show create table user G;

*************************** 1. row ***************************

Table: user

Create Table: CREATE TABLE `user` (

`name` varchar(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

我们可以看到表的默认字符集是latin1.

所以我们在创建表的时候就需要指定表的字符集:

create table user(name varchar(11)) default charset=utf8;

这样在Linux里面可以访问并且可以插入与访问这个表了。

348f976f1654c7a1eb06761bad4090fd.png

1.3、数据库与操作系统编码

虽然在服务器端可以显示中文正常,但是在客户端可能会显示乱码。因为我们的服务器是UTF8。

3d9465caf15b6438c398e6fdeee80015.png

而且数据库的编码也存在问题。

502bf37d76683c4403b452f08c8b3132.png

这里我们可以看character_sert_database与character_set_server的字符集都是latin1.那么在mysql数据库中,server,database,table的字符集都默认是latin1.下面我们就来看看如何解决mysql乱码情况。

2、mysql设置变量的范围

2.1、session范围

查看数据库编码:

show variables like '%char%';

3879dbd6f180a4d14325a839fcbf48cc.png