来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] 常用的字符集包括ASCII ,GB2312 , GBK , UTF-8 ,Unicode首先要知道ASCII编码:用一个字节来标识0-9的数字、大小写字母、及一些标点和不可见字符。1个字节8位,可以有256种组合。标准的ASCII编码...
常用的字符集包括ASCII ,GB2312 , GBK , UTF-8 ,Unicode 首先要知道
ASCII编码: 用一个字节来标识0-9的数字、大小写字母、及一些标点和不可见字符。1个字节8位,可以有256种组合。标准的ASCII编码只利用一个字节的后7位(128种组合),最高位用作奇偶校验。 范围为0000 0000 - 0111 1111 即 0-127 因为ASCII最多只有256种组合,中国汉字成千上万,所以需要更多的字节来表示一个汉字,常见中文编码的有GB2312和GBK。 GB2312编码: 是中国计算机的本地编码方式,用两个字节来表示一个汉字。为了兼容ASCII编码,这两个字节的取值范围都不在0-127,而是在128-255之间。则GB2312理论上最多有128*128=16384种组合。足够表示常用的汉字。 现有以下几个数,每个数表示一个字节,问哪些是GB2312编码,哪些是用ASCII编码?数字只是随便举的 128 200 65 189 178 23 213 186 128 200 因为两个字节都在128-255之间,所以是用GB2312编码的汉字 65 一个字节在0-127之间,所以是用ASCII编码的,实际表示的是小写字母‘a’。 189 178 同理是用GB2312编码的汉字 213 186 也是用GB2312编码的汉字 GBK编码: 是GB2312的升级版,收容了更多的汉字。它也是用两个字节表示汉字,第一个字节的理论范围依旧是128-255之间,但第二个字节范围变为0-255。理论上最多能表示128*256种组合。同样能兼容ASCII编码。 比如 128 65 65 189 178 23 213 186 因为128不在0-127之间,所以从128开始的2个字节表示的是一个汉字 65在0-127,所以用一个字节表示小写字母‘a’。 189 178 同理189不在0-127之间,表示的是一个汉字 213 186 同理213 不在0-127之间,表示的是一个汉字 Unicode字符集: Unicode其实只是相当于一张表,用4个字节给去全世界的文字进行了编号。 UTF-8编码: UTF-8和Unicode的关系,相当于压缩文件与源文件的关系,UTF-8用来压缩Unicode。UTF-8是变长编码,理论上用1到6字节来表示一个字符。
最高位是0的,用1个字节来表示一个字符 最高位有n个连续的1,则用个n个字节表示一个字符。 MySql乱码问题: 乱码问题有两种可能:1、解码与对应的编码不匹配。2、数据损坏。 第一种是可以解决的,第二种数据已损坏无法还原。 对于第一种情况,要先了解MySql的各个环节 数据库存储数据的编码方式不一致,则接着转换成数据库存储数据的编码方式。同理,当返回结果时,数据库数据比对连接器编码,不一致则转成连接器编码,再比对连接器编码与结果集编码,不一致则转换成结果及编码。 总而言之,只要客户端、连接器、结果集编码保持一致,大部分情况是不会出现乱码的。 可以通过 set character_set_client = 编码方式;设置客户端编码 set character_set_connection=编码方式; 设置连接器编码 set character_set_results=编码方式; 设置接结果集编码 这三句话也可以简化为一句:set names 编码方式 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com