美文网首页饥人谷技术博客
字符集与字符编码

字符集与字符编码

作者: 字母31 | 来源:发表于2017-03-05 00:59 被阅读0次

    1、基本概念

    字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各文字、标点符号、图形符号、数字等。

    字符编码(Character Encoding):是一种算法,该算法能够对字符的集合(如字母表或音节表),与实际存储数值进行配对。通常人们用符号集合(一般情况下就是文字)来表达信息,而计算机的信息处理系统是用元件不同状态的组合来存储和处理信息的,元件不同状态的组合能代表不同的数字组合,因此字符编码就是将字符的集合转换为计算机可以接受的数字组合。

    字符集只规定了字符对应的数字,却没有规定如何存储,字符编码是字符集的存储方式。

    2、常见字符集与字符编码

    常见字符集名称:ASCII字符集、GBxxxx字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储。

    2.1  ASCII字符集和编码

    ASCII字符集:主要包括控制字符(回车键、退格、换行键等);可显示字符(英文大小写字符、阿拉伯数字和西文符号)。

    ASCII编码:将ASCII字符集转换为计算机可以接受的数字系统的数值的一种算法。使用7位(bits)表示一个字符,共128字符;但是7位编码的字符集只能支持128个字符,为了表示更多常用字符对ASCII进行了扩展,ASCII扩展字符集使用8位(bits)表示一个字符,共256字符。

    ASCII是基于拉丁字母的一套编码系统,最大缺点是只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号,因此只能用于显示现代美国英语。

    2.2  GB2312字符集和编码

    计算机发明之后很长一段时间,只用应用于美国及西方一些发达国家,ASCII能够很好满足用户的需求。但是当国内也有了计算机之后,为了显示中文,必须设计一套编码算法用于将汉字转换为计算机可以接受的数字系统的数值。

    国内专家把那些127号之后的奇异符号们(即EASCII)取消掉,规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,还把数学符号、罗马希腊的 字母、日文的假名们都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。编码规则就是GB2312。

    2.3   Unicode字符集和编码

    在计算机科学领域中,Unicode是业界的一种标准,它可以使电脑得以体现世界上数十种文字的系统。Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式对外发表。Unicode 还不断在扩增, 每个新版本插入更多新的字符。直至目前为止的第六版,Unicode 就已经包含了超过十万个字符、一组可用以作为视觉参考的代码图表、一套编码方法与一组标准字符编码、一套包含了上标字、下标字等字符特性的枚举。Unicode 组织(The Unicode Consortium)是由一个非营利性的机构所运作,并主导 Unicode 的后续发展,其目标在于:将既有的字符编码方案以Unicode 编码方案来加以取代,特别是既有的方案在多语环境下,皆仅有有限的空间以及不兼容的问题。

    Unicode是字符集,UTF-32/ UTF-16/ UTF-8是三种字符编码方案。

    UTF-8使用一至四个字节为每个字符编码,它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,现存的ASCII文本不需要转换。UTF-8虽然是一个当今接受度最广的字符集编码,但是它并没有涵盖整个Unicode的字库。UTF-32对所有的Unicode字符均不做变换,直接使用编号存储,只是这种编码方案太浪费存储空间(就连1个字节就可以搞定的英文字符,它都必须使用4个字节),因而尽管使用起来方便(不需要任何转换),却没有得到普及。


    相关文章

      网友评论

        本文标题:字符集与字符编码

        本文链接:https://www.haomeiwen.com/subject/nfajgttx.html