二进制

binary,varbinary,blob

声音、图像、等二进制数据与字符集无关(图像存储为二进制文件,不然存放为非二进制就把二进制转换为相应的字符集(乱码)破坏了原数据)

非二进制

char varchar text

字符集(utf8 gbk gb2312 big5)

字符集的概念

gbk、gb2312、utf8(每个字符集存储上万个字)

一个汉字有2个字节,就等于8位,比如oxfe oxfa等于一个汉字,每个汉字在电脑都是這样储存

  • 简体的新华字典 gb2312
  • 繁体字典 big5
  • 简体繁体都有 gbk
  • gb2312 :6700多个汉字,2个字节
  • big5 :繁体字符集,13000多个汉字,大五码=2字节
  • gbk :21000多个汉字,简体和繁体 2个字节 //大部分操作系统都
    用gbk windows linux
  • utf8(万国码) :unicode 1-3个字节 a一个字节 盾3个字节
  • unicode(万国码) :国际标准化组织制定一套涵盖世界所有语种、所有符号的编码方案

在mysql 显示出字符集

mysql> show character set;

mysql>create table cha (name1 varchar(30) character set utf8,name2 varchar(30) character set gbk);

mysql>show create table cha(表名);//查看表的字段的字符集

mysql>insert into cha(name1,name2) values("吨","吨");

mysql>select length(name1),length(name2) from cha;  //读取字节

mysql>select char_length(name1),char_length(name2) from cha ;

mysql>charact set utf8 collate utf8_bin  //设置字符集校对规则,有ci的都不区分大小写的。

binary(3)//表示存放3个字节的二进制数据
char(3) //存放3个字符

mysql>show variables like "%character%";  //字符集

character_set_client     | gbk           //客户端的字符集
character_set_connection | gbk           //把客户端的发送字符集转换链接字符集,链接字符再转化成字段的字符集
character_set_database   | latin1     //当前选中库的字符集
character_set_filesystem | binary     //文件系统字符集
character_set_results    | gbk        //当服务器接收到信息,返回字符集给客户
character_set_server     | latin1   //默认字符集,如果库,表,字段都没有设置字符集就默认使用这个
character_set_system     | utf8     //系统原数据的字符集,如表名,库名
character_sets_dir       | E:\wamp\bin\mysql\mysql5.6.17\share\charsets\


mysql>show variables like "%collation%";  //校对规则

宽字节不要用set names (gbk);
因为快字节的低四位很容易就剩生成一个/
php是以字符串导入的,如果多了一个/,那他和后面的/就转义成一个/,
那么就多了一个’就生成漏洞,可以输入/* */注释password来绕过验证,
不用验证就进入管理页面,随意修改用户的信息。

解决此问题:
单独设置以下三个,把客户端字符集设置为二进制,二进制不存在转义字符,[set names(gbk)就是把一下三个都转化成gbk]

character_set_connection
character_set_results 
character_set_client

数据的备份:

(设置好环境变量)

mysqldump -uroot -p (数据库名) > e:\blog.sql
mysqldump -uroot -p 数据库名 表名> 导出的文件名	
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

导入数据库

mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\wcnc_db.sql