ASCII,ANSI,Unicode,UTF-x的异同

ASCII码

       ASCII的英文全称为American Standard Code for Information Interchange,翻译过来即:美国信息互换标准代码。ANSII是最早的编码方式,主要用于解决计算机对信息的存储与传输,简单来说就是如何用0和1来表述各种字符(这里是拉丁字母)使其能够存储在计算机中。

       标准ASCII采用7位二进制组合数来表示128中可能的字符,在计算机的存储中占一个字节。

有几个需要记住的对应关系有

  • 0x31👉1
  • 0x41👉A
  • 0x61👉a

        显然这128个字符只满足某些语言的使用,为了使计算机支持更多语言,就需要有新的编码方式,或新的编码进行扩充。因此便有了ANSI码和UTF-x码。下面来介绍ANSI码。


ANSI码

        ANSI可以看作是一个集合,包括我们熟知的GBK,GB2312,BIG5等等。

        通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符,即原有的ASCII码,因此ANSI兼容ASCII码;超出此范围的使用0x80~0xFFFF来编码,即可以使用两个字节位来表示一个字符。

        不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操作系统中,ANSI 编码代表 GB2312编码;在繁体中文Windows操作系统中,ANSI编码代表Big5。

        由于标准不同,很显然,不同的ANSI中同一个二进制数(除去ASCII)表示的字符不同,因此不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。这一点我们需要注意。

        我们只需要知道GBK表示中文时为两个字节,并且其向下兼容ASCII码即可。


Unicode

        首先,提供一个Unicode字符集网址以供观摩。

        Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的映射数字,以满足跨语言、跨平台进行文本转换、处理的要求。

        Unicode是国际组织制定的可以容纳世界上所有文字和符号的映射方案。因此又称为万国码、统一码。Unicode用数字0-0x10FFFF(1114112)来映射这些字符。Unicode定义了17个平面(0-16),每个平面有2^16(32768)个码位,因此共有2^16 * 17(1114112)个码位,即最多可以容纳1114112个字符。显然说Unicode字符为两个字节是有大大的问题的。

        Unicode只是一种映射方案,当谈到其在计算机内存中的存储时,Unicode码并非字符在内存中的存储映射,这时就需要有编码方案。UTF是“UCS Transformation Format”的缩写,可以翻译成Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。UTF-8、UTF-16、UTF-32就是将映射数字转换到程序数据的编码方案,分别以1字节、2字节、4字节作为编码单位,是可变长的编码方案。

        这里我们只需要知道,Unicode只是一种映射方案,对于UTF-8,我们只需要知道中文占3个字节,并且向下兼容ASCII码。

因本人水平有限,如有错误,还望指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值