读书人

狂言字符编码发展史

发布时间: 2012-09-03 09:48:39 作者: rapoo

大话字符编码发展史


ASCII码
??? ASCII码于1968年提出,用于在不同计算机硬件和软件系统中实现数据传输标准化,在大多数的小型机和全部的个人计算机都使用此码。ASCII码划分为两个集合:128个字符的标准ASCII码和附加的128个字符的扩充和ASCII码。比较EBCDIC。其中95个字符可以显示。另外33个不可以显示。 标准ASCII码为7位,扩充为8位。 
??? 美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符

??? 从描述可以看出(ASCII码)表示 ,只是对西文字符的一个集合. [a-z][A-Z] ,其中包括95个可见字符.和33个不可见字符. 不可见字符如 “\t:9:,”\n:10”,”\r:13” 可见字符如 “A: 65”,”0:48”

分区范围符号类型第01区中文标点、数学符号以及一些特殊字符第02区各种各样的数学序号第03区全角西文字符第04区日文平假名第05区日文片假名第06区希腊字母表第07区俄文字母表第08区中文拼音字母表第09区制表符号第10-15区无字符第16-55区一级汉字(以拼音字母排序)第56-87区二级汉字(以部首笔画排序)第88-94区无字符

?

?

GB2312字符在计算机中存储是以其区位码为基础的,其中汉字的区码和位码分别占一个存储单元,每个汉字占两个存储单元。由于区码和位码的取值范围都是在1-94之间,这样的范围同西文的存储表示冲突。例如汉字‘珀’在GB2312中的区位码为7174,其两字节表示形式为71,74;而两个西文字符‘GJ’的存储码也是71,74。这种冲突将导致在解释编码时到底表示的是一个汉字还是两个西文字符将无法判断。

?

这也就是一些操作byte来进行汉字操作的程序员经常分出半个汉字的原因了!

?

GB2312编码用两个字节(8位2进制)表示一个汉字,所以理论上最多可以表示256×256=65536个汉字。但这种编码方式也仅仅在中国行得通,如果您的网页使用的GB2312编码,那么很多外国人在浏览你的网页时就可能无法正常显示,因为其浏览器不支持GB2312编码。当然,中国人在浏览外国网页(比如日文)时,也会出现乱码或无法打开的情况,因为我们的浏览器没有安装日文的编码表。

?

?

?

编码范围符号类别8140H-A0FEH保留(用作造字区)A140H-A3BFH标点符号、希腊字母及特殊符号A3C0H-A3FEH保留(未开放用于造字区)A440H-C67EH常用汉字(先按笔划,再按部首排序)C6A1H-C8FEH保留(用作造字区)C940H-F9D5H非常用汉字(先按笔划,再按部首排序)F9D6H-FEFEH保留(用作造字区)

?

Big5编码的分布如表1-5所示,Big5字符主要部分集中在三个段内:标点符号、希腊字母及特殊符号;常用汉字;非常用汉字。其余部分保留给其他厂商支持。

?

 Big5编码推出后,得到了繁体中文软件厂商的广泛支持,在使用繁体汉字的地区迅速普及使用。目前,Big5编码在台湾、香港、澳门及其他海外华人中普遍使用,成为了繁体中文编码的事实标准。在互联网中检索繁体中文网站,所打开的网页中,大多都是通过Big5编码产生的文档。

?

?

?

Base64编码

?

有的电子邮件系统(比如国外信箱)不支持非英文字母(比如汉字)传输, ?Base64编码这是历史原因造成的(认为只有美国会使用电子邮件?)。因为一个英文字母使用ASCII编码来存储,占存储器的1个字节(8位),实际上只用了7位2进制来存储,第一位并没有使用,设置为0,所以,这样的系统认为凡是第一位是1的字节都是错误的。而有的编码方案(比如GB2312)不但使用多个字节编码一个字符,并且第一位经常是1,于是邮件系统就把1换成0,这样收到邮件的人就会发现邮件乱码。

?

?

为了能让邮件系统正常的收发信件,就需要把由其他编码存储的符号转换成ASCII码来传输。比如,在一端发送GB2312编码->根据Base64规则->转换成ASCII码,接收端收到ASCII码->根据Base64规则->还原到GB2312编码。

?

读书人网 >编程

热点推荐