很多同学在刚开始接触MySql数据库的时候,会碰到乱码问题,很是头疼,今天我就带大家彻底的解决MySql数据库乱码问题。
第一,安装MySql(在这儿就不赘述了)
第二,建数据库,建表如下图
插入数据
insert into t1 values (null,'我插入的是中文');
不好了,出现了错误,这是说中文无法识别,数据库不认识这个东西,存不进去,那么我们该怎么办呢!
如果你赶时间,在这里介绍一种最简单的解决乱码的方法 只需要写入这一条指令 set names gbk;回车然后插入再次数据
查询,ok,乱码解决!
那么如果你想搞清楚这里面的原因,接着看下去
执行show variables like'char%';
这一条命令就把数据库所有关于编码的选项都选择出来了,character_set_client 是客户端的编码,也可以右击属性里看到
怎么回事?怎么会是gbk????我明明看到的是utf8啊?难道见鬼了???不是见鬼了,这才是真正出现乱码的原因,客户端属性明明是GBK,而我们设置的却是utf8,
这就是说,当客户端存进来用GBK编码的数据时,我们告诉数据库说,这是utf8编码的数据,数据库会以utf8的编码方式编码GBK的数据后存入数据库,自然会出现乱码,
这是我们设置上的错误,只要执行命令
set character_set_client = gbk;
set character_set_results = gbk;
就ok了,意思是说用GBK编码GBK的数据,用GBK的编码方式查看机查询的结果集,自然就不会乱码了,
这时候可能会有人说,那怎么还有utf8呢?有两种编码怎么还能不乱呢?
这又要说道一个转换器的概念,就是说当客户端把数据传到数据库存储之前,还要经过转换器,就是cinnection,首先connection会把GBK的数据转换为UFT8然后存储,查询结果也需要转换,utf8包含世界上所有的字符,可以容纳任何字符集的任何字符。
这是字符集乱码的一种情况,希望对初学者有用!