编码基础

首先澄清一个概念 ASCII,ANSI标准和Unicode是一种编码,何为编码,编码的意思是为一个字符规定一个对象的数值,例如A的ASCII编码数值和Unicode数值肯定不同。至于编码对应的数值怎么存储,就不是编码所规定的范畴了。ASCII编码为0X00-0x7F Unicode从0x0000-0xFFFF,注意unicode的物理存储不一定对应一个字节哦,例如utf-8。

ANSI 美国国家标准协会,也就是说,每个国家(非拉丁语系国家)自己制定自己的文字的编码规则,并得到了ANSI认可,换句话说就是不同国家地区的ANSI编码数值是不同的。中国的ANSI编码和在日本的ANSI的意思是不一样的,中国一般是GBK,日本是JIT,香港、台湾一般是Big5。所以基于ANSI标准的语言编码,在逻辑上需要的字符数就显得不一定了,可能是一个,可能是两个,可能是三个。

搞懂了ANSI的含义,我们发现ANSI有个致命的缺陷,就是每个标准是各自为阵的,不保证能兼容。换句话说,要同时显示中文和日本文或者阿拉伯文,就完全可能会出现一个编码两个字符集里面都有对应,不知道该显示哪一个的问题,也就是编码重叠的问题。显然这样的方案不好,所以Unicode才会出现。

SBCS Single Byte Code set 意思是一个单字符字符集

MBCS 多字符字符集合,多字节字符系统或者字符集,基于ANSI编码的原理上,对一个字符的表示实际上无法确定他需要占用几个字节的,只能从编码本身来区分和解释。因此计算机在存储的时候,就是采用多字节存储的形式。也就是你需要几个字节我给你放。

DBCS 双字符字符集

可以参考这个哥们写个一片文章不错:http://blog.csdn.net/softman11/article/details/6124345

http://ycwangshuai2008.blog.163.com/blog/static/5066933120108182453397/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值