计算机系统-字符集及C/C++对Unicode的支持

计算机上有3种字符集
1.单字节字符集SBCS
2.多字节字符集MBCS
3.Unicode编码

1.单字节字符集SBCS
规定所有的字符都只占一个字节的长度,其中高位永恒为0,剩下7位用来表示字符,目前只包含下面两种属于SBCS
-----ASCII字符集
-----拓展ASCII字符集

2.多字节字符集MBCS
由于计算机普及到了欧洲,欧洲国家的字符要比英文字母多,为了能够表示欧洲国家的文字,人们对ASCII进行了拓展,对于欧洲字符和英文字母,依然采用1个字节表示,但是开始使用最高位(在SBCS中最高位不使用,永远是0),现在发现不够用,所以把最高位也用上了,这样就从128变成了256,但是计算机又普及到了亚洲,字符更多了,人们又对ASCII基础上拓展,从1个字节变成了2个字节,除了欧洲字符和英文使用一个字节之外,其他国家都用2个字节,并且其他国家自己对这两个字节进行实现,比如大陆使用了GB2312,台湾省使用了big5,AV国使用了jis,但是,缺点随之而来,有的地区使用1个字节表示字符,有的地区使用2个字节表示字符,这样处理字符串非常的复杂,尤其是用++或者–遍历char的时候,这就衍生了下一个字符集,Unicode字符集

3.Unicode编码
关于Unicode编码网上资料很多,内容较多,我手写很累,这里不多赘述,但是我要阐述C运行时库对Unicode的支持
由于Unicode是在C后边出来的,所以C/C++定义了名为"宽字符类型"的数据类型wchar_t,定义如下

typedef unsigned short wchar_t;

从定义可知wchar_t占用两个字节

发布了157 篇原创文章 · 获赞 26 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/u011624903/article/details/105021533
今日推荐