多字节字符集

再探C++Primer (3)关于unicode和多字节字符集

烂漫一生 提交于 2019-12-09 13:20:27
###ASCⅡ码# 在ASCⅡ码制定的过程中,对于代码是6、7、8位争议不断,由于可靠性的原因,舍弃了6位,而由于成本问题(上世纪60年代来说,8位代价是非常昂贵的),选择了7位编码。于是最后代码共有26个小写字母,26个大写字母,10个数字,32个符号,33个控制码,一个空格码,共128个代码组成了ASCⅡ码,成为了全球标准。 在小型计算机发展时期,8位一字节的标准得到巩固,于是决定以一个字节来储存字符,也就是8位编码,这样就有了128个额外的字符来补充ASCⅡ。 ###多字节字符集DBCS# 256字符的字符集难以满足如中文、日文、韩文以及世界各个国家的各种文字需求,于是产生了多字节字符集(DBCS)。DBCS前128个代码就是ASCⅡ码,而较高的128个中有些还跟随有第二个字节,这两个字节在一起表示一个单独的字符,如一个汉字。 DBCS的问题在于,有些字符是单个字节组成的,例如ASCⅡ码,有些字符是两个字节组成的,这导致了字符串的字符长度不能由字节数量决定,字符串的长度需要解析后才知道,每个字节都要被检查是不是双字节的前导字节。 ###Unicode字符集# 很明显的是,DBCS是一种很笨的解决方法,也产生了很多问题。作为程序员,我们知道,与其混合使用1字节和2字节代码的DBCS,倒不如用一种全都是2字节16位编码的字符集,这就是Unicode字符集。 Unicode被认为是