windows程序设计第二章Unicode简介.doc
Unico?de简介
在第一章中,我已经预告?,C语言中在?Micro?soft Windo?ws程序设?计中扮演着?重要角色的?任何部分都?会讲述到,您也许在传?统文字模式?程序设计中?还尚未遇到?过这些问题?。宽字符集和?Unico?de差不多?就是这样的?问题。
简单地说,Unico?de扩展自?ASCII?字符集。在严格的A?SCII中?,每个字符用?7位表示,或者计算机?上普遍使用?的每字符有?8位宽;而Unic?ode使用?全16位字?符集。这使得Un?icode?能够表示世?界上所有的?书写语言中?可能用于计?算机通讯的?字符、象形文字和?其它符号。Unico?de最初打?算作为AS?CII的补?充,可能的话,最终将代替?它。考虑到AS?CII是计?算机中最具?支配地位的?标准,所以这的确?是一个很高?的目标。
Unico?de影响到?了计算机工?业的每个部?分,但也许会对?操作系统和?程序设计语?言的影响最?大。从这方面来?看,我们已经上?路了。Windo?ws NT从底层?支持Uni?code(不幸的是,Windo?ws 98只是小?部分支持U?nicod?e)。先天即被A?NSI束缚?的C程序设?计语言通过?对宽字符集?的支持来支?持Unic?ode。下面将详细?讨论这些内?容。
自然,作为程序写?作者,我们通常会?面对许多繁?重的工作。我已试图透?过使本书中?的所有程序?「Unico?de化」来减轻负担?。其含义会随?着本章对U?nicod?e的讨论而?清晰起来。
字符集简史?
虽然不能确?定人类开始?讲话的时间?,但书写已有?大约600?0年的历史?了。实际上,早期书写的?内容是象形?文字。每个字符都?对应于发声?的字母表则?出现于大约?3000年?前。虽然人们过?去使用的多?种书写语言?都用得好好?的,但19世纪?的几个发明?者还是看到?了更多的需?求。Samue?l F. B. Morse?在1838?年到185?4年间发明?了电报,当时他还发?明了一种电?报上使用的?代码。字母表中的?每个字符对?应于一系列?短的和长的?脉冲(点和破折号?)。虽然其中大?小写字母之?间没有区别?,但数字和标?点符号都有?了自己的代?码。
Morse?代码并不是?以其它图画?的或印刷的?象形文字来?代表书写语?言的第一个?例子。1821年?到1824?年之间,年轻的Lo?uis Brail?le受到在?夜间读写信?息的军用系?统的启发,发明了一种?代码,它用纸上突?起的点作为?代码来帮助?盲人阅读。Brail?le代码实?际上是一种?6位代码,它把字符、常用字母组?合、常用单字和?标点进行编?码。一个特殊的?escap?e代码表示?后续的字符?代码应解释?为大写。一个特殊的?shift?代码允许后?续代码被解?释为数字。
Telex?代码,包括Bau?dot (以一个法国?工程师命名?,该工程师死?于1903?年)以及一种被?称为CCI?TT #2的代码(1931年?被标准化),都是包括字?符和数字的?5位代码。
美国标准
早期计算机?的字符码是?从Holl?erith?卡片(号称不能被?折迭、卷曲或毁伤?)发展而来的?,该卡片由H?erman? Holle?rith发?明并首次在?1890年?的美国人口?普查中使用?。6位字符码?系统BCD?IC(Binar?y-Coded? Decim?al Inter?chang?e Code:二进制编码?十进制交换?编码)源自Hol?lerit?h代码,在60年代?逐步扩展为?8位EBC?DIC,并一直是I?BM大型主?机的标准,但没使用在?其它地方。
美国信息交?换标准码(ASCII?:Ameri?can Stand?ard Code for Infor?matio?n Inter?chang?e)起始于50?年代后期,最后完成于?1967年?。开发ASC?II的过程?中,在字符长度?是6位、7位还是8?位的问题上?产生了很大?的争议。从可靠性的?观点来看不?应使用替换?字符,因此ASC?II不能是?6位编码,但由于费用?的原因也排?除了8位版?本的方案(当时每位的?储存空间成?本仍很昂贵?)。这样,最终的字符?码就有26?个小写字母?、26个大写?字母、10个数字?、32个符号?、33个句柄?和一个空格?,总共128?个字符码。ASCII?现在记录在?ANSI X3.4-1986字?符集-用于信息交?换的7位美?国国家标准?码(7-Bit ASCII?:7-Bit Ameri?can Natio?nal Stand?ard Code for Infor?matio?n Inter?chang?e),由美国国家?标准协会(Ameri?can Natio?nal Stand?