mysql客户端中文乱码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Tacks/article/details/79705006

我用的是wamp集成软件,对于其中的mysql5.6.17就是默认安装,并没有修改什么参数值。现在重现一些客户端中文乱码的样子,来看看到底是哪里的问题。


问题重现

创建数据tacks库
create database tacks ;
use tacks;
创建一个test表
create table test(name char(10));
添加数据
insert into test  values('中文');

问题重现

于是乎开始慌了,中文怎么弄???
听说有set names utf8;
set names utf8
然并卵!!!并没有什么用

set names utf8指定了客户端和服务器之间传递字符的编码规则为UTF8。
相当于
set character_set_client = utf8;
set character_set_results = utf8;
set character_set_connection = utf8;
看看这3个变量的作用:
信息输入路径:client→connection→server;
信息输出路径:server→connection→results。
换句话说,每个路径要经过3次改变字符集编码。以出现乱码的输出为例,server里utf8的数据,传入connection转为latin1,传入results转为latin1,utf-8页面又把results转过来。如果两种字符集不兼容,比如latin1和utf8,转化过程就为不可逆的,破坏性的。

那查看一下数据表的编码格式

show create table test \G

编码格式

查看一下数据库的编码格式

show variables like "%char%";

编码格式

发现问题了 原来是数据库和数据表的编码格式都不对!!!


解决方法

思路:直接修改mysql的配置文件my.ini使之永远编码是utf8
D:\wamp\bin\mysql\mysql5.6.17\my.ini【我的配置文件地址】
这里写图片描述
这里写图片描述
这里写图片描述
分别在对应位置加上三句话

[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8

再次查看一下编码
这里写图片描述
保存后重启mysql服务。
然后重新建一个表
这里写图片描述

成功!!!


个人总结

查看建表语句
show create table 表名 \G
查看数据库编码
show variables like "%char%"

实际上在写建库建表语句的时候就指定好编码格式是一个不错的习惯
以下是我经常写的一些
创建库
create database 数据库名 charset utf8;
创建表
creat tables stu(id int,
name char (10)
)engine myisam charset utf8 collate utf8_general_ci;
//engine myisam 表示引擎和性能特点相关
//charset utf8 表示数据表的编码格式
//collate utf8_general_ci 数据库的校验规则,ci是case insensitive的缩写,意思是大小写不敏感 ;相对的是cs,即case sensitive,大小写敏感;

猜你喜欢

转载自blog.csdn.net/Tacks/article/details/79705006
今日推荐