最新文章
- MySQL中, group by 和 order by 一起使用会有排序问题,group by 和 order by 同时使用时要注意的地方
- Vue学习笔记(10) ——Vue组件中的data和methods
- Vue学习笔记(9) ——Vue组件创建的几种方式
- Vue学习笔记(8) ——Vue实例的生命周期
- Vue学习笔记(7) —— 过滤器 filter的基本使用
- Vue学习笔记(6) ——v-if指令和v-show指令
- Vue学习笔记(5) —— v-for指令和key属性
- Vue学习笔记(5) —— Vue中样式-class样式和style样式
- Vue学习笔记(4) —— v-model指令,双向数据绑定
- Vue学习笔记(3) —— Vue事件修饰符
关注我


MySQL 字符集与乱码问题
- 分类:MySQL技术
- 时间:2017-11-20
- 共883人围观
牵涉到 :
字符集 , 乱码
几乎 80% 的初学者 , 在开发中 , 在学习中 , 会遇到过乱码的困扰
我们现在就来学习 , 怎么样以后才能不乱码 , 不受乱码的干扰 ;
乱码 :
对计算机而言 , 没有这个乱码 , 只是对人而言 , 人看不懂
乱码只是 文字本来的字符集 和 展示的字符集 不一致
想要不乱码很简单 : 输入的字符集和展示的字符集一致 , 自然就不会乱码 ;
选字符集 -> 就选 utf8 即可 , 这是大趋势
既然是 utf8; 为什么在 mysql 中 , 有的会 set names gbk;
世界银行存储就只认黄金,不论我们带着哪国的钱过去了,都给你折换成金条存起来下次你去取钱,你说,我要人民币,那么银行就会把你的黄金折换成人民币还给你这个银行就是连接器。连接器既可以使用utf8,也可以使用gbk;无论连接器是什么字符集,存储在数据库中的都是 utf8
一、查看字符集
show variables like '%charact%';
现在这3者保持一致,gbk,不过这三个字符集可以人为更改的
2. 将客户端字符集改为 utf8
但是我们的黑窗口(cmd)是gbk编码的,插入内容,我们会发现乱码
1) 建表
create table test3 ( name char(10) not null default '' )charset=utf8;
2) 改客户端字符集并插入数据
set character_set_client = utf8; insert into test3 values ('中国人民解放军'); select * from test3; set character_set_client = gbk;
3. 将数据库返回的数据 改为 utf8 编码的
客户端是gbk编码的,返回utf8编码的数据,客户端肯定不认识,所以还是会乱码\
set character_set_results = utf8; insert into test3 values ('中国人民解放军'); select * from test3; set character_set_results = gbk;
4. 中间的连接器,使用utf8和gbk都是可以的
character_set_connection
因为连接器始终需要 gbk=>utf8 因为始终都需要存储成utf8
注意:
连接器不能使用较小的字符集,如ascii,在转换的时候会丢失一部分编码,而丢失的这部分编码是不可逆推回来的.
5. 如果三者都一致,可以用简写
set names gbk/utf8;
6. 我们知道,谁能连接数据库,谁就可以称为客户端
有时候我们用 .php文件 去连接数据库
我们的php就是客户端,那我们的php页面,编码统一使用的utf8;
我们只需要在 .php 文件里,
set names utf8; 即可保证不乱码
而有的学员是 在开发 php 的时 set names utf8;
在 命令行 黑窗口中还是 set names utf8;
这不就乱码了么,两个不同的客户端,各使各的参数就可以了
7. 杜绝乱码的,检查的几个步骤
1) php 文件是 utf8
2) html 页面的 meta 信息 也是utf8
3) 建表时,也是utf8
create table () charset=utf8;
4) php页面连接数据库时
set names utf8;
检查这四步,之后,如果仍然乱码,则继续检查这四步
上一篇:MySQL中的视图
下一篇:MySQL 中的校对集