字符编码详解

字符编码

计算机中的存储是以字节为单位的,能反映的也仅仅是数字而已,为了能够用数字将文字信息反映出来人们设计出了各种字符编码表,将数字与文字对应。

一、ASCI编码

1.原始Ascii编码

原始ASCI使用1到127(0X00~0X7F)来对应常用的一些字母等文本,127到255则是扩展到一些不常用的类似于=号这种内容。

但原始ASCI所支持的字符仅仅能够反映英文国家的使用场景。

2.ASCI扩展编码

对于某些地区是无法用原始ASCI编码来反映当地的语言的,所以就有了ASCI扩展编码的这种形式。

扩展ASIC编码将不常用的127到255的(0x80~0xFF)位置采用两个数字对应一个文字的方式

如:可能128和129代表一个中,129和130代表一个国

呢么中国对应的编码就是:0x 8081 8182

例如国内常用的GBK、GB2312和台湾的big5等编码方式都是采取的此类

但是这种编码方式有一个问题,就是他占用了ASCI表的127到255的位置并且不同的地区这部分的编码均不一样,呢么国内的中文文件发到国外采用了不同的编码去读取则会出现乱码

二、Unicode编码

Unicode编码就是为了解决ASCii扩展码在不同地区的实现下解码后对应不同的文字这个问题

Unicode编码将全世界常用的符合都构建到一个表中,这个表的范围是:0x10 FF FF到0
Unicode仅仅提供了一个表,他并没有对存储做过多的要求,而下面所说的utf-8和utf-16以及现在的utf-32则是对Unicode编码存储方式的不同实现

1.unicode编码实现(utf-8)

utf-8较之utf-16在存储上更为复杂,但是所占空间是更小的,这也是网络传输大多为utf-8的格式的原因

存储规则:

如果目标符合在Unicode中为:0到00007F则会被编码为:0xxx xxxx

如果目标符合在Unicode中为:80到00007FF则会被编码为:110xx xxx 10xx xxxx

如果目标符合在Unicode中为:800到00FFFF则会被编码为:1110 xxxx 10xx xxxx 10xx xxxx

如果目标符合在Unicode中为:10000到10FFFF则会被编码为:1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx

2.unicode编码实现(utf-16)

utf-16名如其意,就是以两个byte为单位进行存储。

举例:如果说在Unicode编码中 中对应0x10 61 62

呢么采用utf-16存储在文件中的byte就是 0x 0010 6162

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值