字符集

来源:互联网 发布:kaggle 知乎 编辑:程序博客网 时间:2024/06/06 21:40
1、ANSI(American National standards Institute)编码
     英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件,unicode和ansi都是字符代码的一种表示形式。
为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
       不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
        不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。


ANSI编码表示英文字符时用一个字节,表示中文用两个字节,而unicode不管表示英文字符还是中文都是用两个字节来表示。


   计算机内部的数据最终以二进制形式存放,每个二进制位(bit)有0和1两种状态,而8个二进制位(bit)组合称为一个字节(Byte),所以一个字节能够组合出256中状态,即从00000000到11111111。


  ANSI的ASCII字符集(American Standard Code Information Interchange),GB2312是ASCII的中文扩展
规定一个小于127的字符意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,这就是学说的全角,原来127以下的那些就叫半角字符


Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾,NT操作系统内核用的是这种字符串,常被定义为typedef unsigned short wchar_t;所以我们有时常会见到什么char*无法转换为unsigned short*之类的错误,其实就是unicode


UTF8是Unicode一种压缩形式,英文A在unicode中表示为0x0041,是Ansi的超集老外觉得这种存储方式太浪费,因为浪费了50%的空间,于是就把英文压缩成1个字节,成了utf8编码,但是汉字在utf8中占3个字节,显然用做中文不如ansi合算,这就是否中国的网页用作ansi编码而老外的网页常用utf8的原因。




8bit(位)=1Byte(字节)
1024Byte(字节)=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
0 0
原创粉丝点击