目录
一、字符集的介绍
字符集,什么是字符集呢?相信大家应该会遇到乱码的情况吧(乱码就是打开一个文件,文件中的内容与写进去的内容不一致,出现的是一些看不懂的符号)。那为什么会出现乱码呢?出现乱码的原因就是字符集。这里我们可以将字符集比作是一个字典,而在计算机中,任意的数据都是以二进制的形式来存储的的,我们想要知道一个二进制数表达的是什么数据,就需要查询该二进制数在字符集(也就是字典)上所表示的数据,而乱码出现的原因就是查询的字典不同,试问两个不同的字典如新华字典和英文单词表查询他们得到的数据会是一样的吗?这就是乱码出现的根本原因。而字符集我们也就可以将它理解成是计算机二进制数据的字典。
字节是计算机最小的存储单元,一个字节有八位二进制数。
二、字符集的分类
(1)ASCII字符集
ASCII字符集只是对于英文有着编码规则,对于汉字等其他语言并没有。
如:a
查询ASCII表,得到值97,97转换成二进制数是110 0001,前面说到了字节是计算机最小的存储单元,而一个字节是八位二进制数,
ASCII编码规则:前面补0,补齐八位。所以编码得到0110 0001,后面开始解码,得到97,查询ASCII表,得到a。
(2)GBK字符集
GB2312字符集是我国发布的收录了简体中文的字符集,后来台湾也发布了BIG5字符集,台湾作为我们祖国的一部分,一个国家出现了两个字符集,
那我国后来就又发不了GBK字符集,包含了国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字,windows系统默认使用的就是GBK。
系统显示:ANSI
GBK 英文的存储规则: a 查询GBK 得到97转换成二进制 0110 0001 英文用一个字节存储,完全兼容ASCII,补齐八位,不足八位前面补0 汉字的存储规则 汉 查询GBK 得到47802转换 10111010 10111010 汉字用;两个字节存储(2的16次方个汉字应该够用了吧),高位字节(左边的)二进制一定以1开头,转换成十进制之后是一个负数
(3)Unicode字符集
不同地区的字符集出现了不同的编码方式,也就出现了所谓的乱码,这个时候就需要统一的字符集了,万国码Unicode字符集
也就出现了。Unicode字符集:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的
文本信息转换。
Unicode的存储规则与GBK是差不多的 这里Unicode一般是使用UTF-8编码规则 说到这个其实还有UTF-32编码规则(32个比特位,固定使用四个字节保存)一直四个字节对于中文英文太浪费空间了 UTF-16编码规则(用2到4个字节保存)对于使用一个字节的英文来说太浪费空间了。 所以Unicode使用的编码规则一般是UTF-8(用1到4个字节保存)(注意哦简体中文用三个字节哦) UTF-8编码规则: 0xxxxxxxx (ASCII) 110xxxxx 10xxxxxx 1110xxxx 10xxxxxx 10xxxxxx 11110xxx 10xxxxxx 10xxxxxx 如汉字:汉 查询Unicode是27721转换成二进制 01101100 01001001 UTF-8编码变成:11100110 10110001 10001001
这里一定要注意UTF-8不是一个字符集,它只是Unicode字符集的一种编码方式,千万不要搞错了
windows系统默认使用的是GBK