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个字节...



一共有三类编码:

  • ANSI(ISO-8859-1,GBK,GB2312,BIG5等)
  • UCS(UCS2,UCS4)
  • UTF(UTF7 UTF8 UTF16)

其 中 所有的编码都可以转成UCS,UTF是UCS为了节省空间的一种存储方式(使用huffman编码的理论的变长编码,如果全部都是e文的话可以有效地压缩 成UTF8,如果是中文编码成UTF8反而会浪费空间)。ANSI各个编码之间不存在抓换关系只存在极少数的对应关系(比如每个ANSI编码都必须包含英 文,又比如简体字与繁体字之间的对应关系使GBK和BIG5之间的某些编码存在对应关系,这种关系是无规律的)。

ISO-8859-1 和GB2312是不能直接转的。他们都属于ANSI编码。