ANSI ASCII UNICODE

来源:互联网 发布:普通话翻译客家话软件 编辑:程序博客网 时间:2024/06/07 17:42

作者:yc550370460

转自:http://blog.csdn.net/new_eggs/article/details/8731449


ANSI

    概述

    ANSI编码使用8位二进制数来表示每个字符。8个二进制数能表示256个信息单元,因此,该编码可以对256个字符、符号等进行编码。ANSI开始的128个字符的编码和ASCII定义的一样,只是在最高位上加个0。例如,在ASCII编码中,字符"A"表示为1000001,而在ANSI编码中,则用01000001表示。除了表示ASCII编码中的128个字符外,ANSI编码还有128个符号可以表示,如版权符、英镑符、外国语言字符等。    为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表1个字符。这一点是ANSI编码与Unicode(UTF-16)编码之间最大也最明显的区别。比如“A君是第131号”,在ANSI编码中,占用12个字节,而在Unicode(UTF-16)编码中,占用16个字节。因为A和1、3、1这4个字符,在ANSI编码中只各占1个字节,而在Unicode(UTF-16)编码中,是需要各占2个字节的。

    ANSI编码规则

    ANSI字符编码的规则,或者是其所包含的字符的由来,主要是:

    1.0-127 (0x00-0x7F)    完全和7位编码的ASCII字符集(ASA X3.4-1963)相同.

    2.128-159 (0x80-0x9F)   一些可打印字符,这部分的编码,与国际编码ISO 8859-1的做法不同,ISO 8859-1是将此部分编码用于控制字符.

    3.160-255 (0xA0-0FF)    参考了ISO 8859-1中的字符.

    4.双字节编码,见后。

        编码举例如下:

        

        这里仅仅列出了一部分,完整的请参考:http://www.kostis.net/charsets/cp1252.htm

ASCII

    概述

ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符

       编码格式


来龙去脉

    ANSI (American National Standards Institute)字符集:ASCII字符集+MBCS(Multi-Byte Character System)字符集,如GB2312。

    ASCII : 最初,ANSI只包括一种字符集(ASCII-American Standard Code for Information Interchange)。ASCII码使用7bit表示一个字符,共128个字符。之后IBM在此基础上做了扩展,用8bit表示1个字符,共256个 字符,称为ISO-8859-1字符集

    MBCS : 为使计算机支持更多语言,这些派生的字符集通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符. 汉字 '中' 在中文操作系统(使用ANSI编码)中,使用 [0xD6,0xD0] 这两个字节存储。在简体中文系统下,MBCS编码代表 GB2312 编码,在繁体中文系统中,MBCS编码代表BIG5,日文操作系统下,MBCS 编码代表 JIS 编码。

     Unicode: 由于ANSI字符集在不同语言环境下的不统一,导致字符集太多,国际交流中也需要进行字符集转换,带来很大不便。于是出现了unicode字符集。该字符集使用16bit代表一个字符,可表示65536个字符。使用Unicode字符集时,方法strlen对一个中文字符执行的结果是1。为了在网络上传输unicode字符,Unicode可以有多种编码方式,如UTF-16, UTF-8, UTF-32等

    UTF-16 : 标准的Unicode称为UTF-16(UCS Transformation System)。这种编码方式由于采用两个字节表示一个字符,所以与ASCII码不兼容。

    UTF-8 : 为了双字节的unicode可在单字节系统正确传输,出现了UTF-8。通过UTF-8编码的字节长短不同,0-127范围内的字符被编成1个字节,0080-07ff的字符被编成2个字节,0800-ffff的字符被编成3个字节...

参考文献

    http://blog.csdn.net/swingseagull/article/details/6456523


0 0