字符集详解

目录

一、字符集的介绍

二、字符集的分类

(1)ASCII字符集

(2)GBK字符集

(3)Unicode字符集


一、字符集的介绍

字符集,什么是字符集呢?相信大家应该会遇到乱码的情况吧(乱码就是打开一个文件,文件中的内容与写进去的内容不一致,出现的是一些看不懂的符号)。那为什么会出现乱码呢?出现乱码的原因就是字符集。这里我们可以将字符集比作是一个字典,而在计算机中,任意的数据都是以二进制的形式来存储的的,我们想要知道一个二进制数表达的是什么数据,就需要查询该二进制数在字符集(也就是字典)上所表示的数据,而乱码出现的原因就是查询的字典不同,试问两个不同的字典如新华字典和英文单词表查询他们得到的数据会是一样的吗?这就是乱码出现的根本原因。而字符集我们也就可以将它理解成是计算机二进制数据的字典。

字节是计算机最小的存储单元,一个字节有八位二进制数。

二、字符集的分类

(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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜到极致就是渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值