



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机字符集简史虽然不能确定人类开始讲话的时间,但书写已有大约6000年的历史了.实际上,早期书写的内容是象形文字.每个字符都对应于发声的字母表则出现于大约3000年前.虽然人们过去使用的多种书写语言都用得好好的,但19世纪的几个发明者还是看到了更多的需求.Samuel F. B. Morse在1838年到1854年间发明了电报,当时他还发明了一种电报上使用的代码.字母表中的每个字符对应于一系列短的和长的脉冲(点和破折号).虽然其中大小写字母之间没有区别,但数字和标点符号都有了自己的代码. Morse代码并不是以其它图画的或印刷的象形文字来代表书写语言的第一个例子.1821年到1824年之间,
2、年轻的Louis Braille受到在夜间读写信息的军用系统的启发,发明了一种代码,它用纸上突起的点作为代码来帮助盲人阅读.Braille代码实际上是一种6位代码,它把字符、常用字母组合、常用单字和标点进行编码.一个特殊的escape代码表示后续的字符代码应解释为大写.一个特殊的shift代码允许后续代码被解释为数字. Telex代码,包括Baudot (以一个法国工程师命名,该工程师死于1903年)以及一种被称为CCITT #2的代码(1931年被标准化),都是包括字符和数字的5位代码. 美国标准 早期计算机的字符码是从Hollerith卡片(号称不能被折迭、卷曲或毁伤)发展而来的,该卡片由
3、Herman Hollerith发明并首次在1890年的美国人口普查中使用.6位字符码系统BCDIC(Binary-Coded Decimal Interchange Code:二进制编码十进制交换编码)源自Hollerith代码,在60年代逐步扩展为8位EBCDIC,并一直是IBM大型主机的标准,但没使用在其它地方. 美国信息交换标准码(ASCII:American Standard Code for Information Interchange)起始于50年代后期,最后完成于1967年.开发ASCII的过程中,在字符长度是6位、7位还是8位的问题上产生了很大的争议.从可靠性的观点来看不应
4、使用替换字符,因此ASCII不能是6位编码,但由于费用的原因也排除了8位版本的方案(当时每位的储存空间成本仍很昂贵).这样,最终的字符码就有26个小写字母、26个大写字母、10个数字、32个符号、33个句柄和一个空格,总共128个字符码.ASCII现在记录在ANSI X3.4-1986字符集-用于信息交换的7位美国国家标准码(7-Bit ASCII:7-Bit American National Standard Code for Information Interchange),由美国国家标准协会(American National Standards Institute)发布.图2-1中所
5、示的ASCII字符码与ANSI文件中的格式相似. ASCII有许多优点.例如,26个字母代码是连续的(在EBCDIC代码中就不是这样的);大写字母和小写字母可通过改变一位数据而相互转化;10个数字的代码可从数值本身方便地得到(在BCDIC代码中,字符0的编码在字符9的后面!) 最棒的是,ASCII是一个非常可靠的标准.在键盘、视讯显示卡、系统硬件、打印机、字体文件、操作系统和Internet上,其它标准都不如ASCII码流行而且根深蒂固. 国际方面 ASCII的最大问题就是该缩写的第一个字母.ASCII是一个真正的美国标准,所以它不能良好满足其它讲英语国家的需要.例如英国的英镑符号()在哪里?
6、 英语使用拉丁(或罗马)字母表.在使用拉丁语字母表的书写语言中,英语中的单词通常很少需要重音符号(或读音符号).即使那些传统惯例加上读音符号也无不当的英语单字,例如c鰋perate或者rsum,拼写中没有读音符号也会被完全接受. 但在美国以南、以北,以及大西洋地区的许多国家,在语言中使用读音符号很普遍.这些重音符号最初是为使拉丁字母表适合这些语言读音不同的需要.在远东或西欧的南部旅游,您会遇到根本不使用拉丁字母的语言,例如希腊语、希伯来语、阿拉伯语和俄语(使用斯拉夫字母表).如果您向东走得更远,就会发现中国象形汉字,日本和朝鲜也采用汉字系统. ASCII的历史开始于1967年,此后它主要致力于
7、克服其自身限制以更适合于非美国英语的其它语言.例如,1967年,国际标准化组织(ISO:International Standards Organization)推荐一个ASCII的变种,代码0x40、0x5B、0x5C、0x5D、0x7B、0x7C和0x7D为国家使用保留,而代码0x5E、0x60和0x7E标为当国内要求的特殊字符需要8、9或10个空间位置时,可用于其它图形符号.这显然不是一个最佳的国际解决方案,因为这并不能保证一致性.但这却显示了人们如何想尽办法为不同的语言来编码的. 扩展ASCII 在小型计算机开发的初期,就已经严格地建立了8位字节.因此,如果使用一个字节来保存字符,则需
8、要128个附加的字符来补充ASCII.1981年,当最初的IBM PC推出时,视讯卡的ROM中烧有一个提供256个字符的字符集,这也成为IBM标准的一个重要组成部分. 最初的IBM扩展字符集包括某些带重音的字符和一个小写希腊字母表(在数学符号中非常有用),还包括一些块型和线状图形字符.附加的字符也被添加到ASCII控制字符的编码位置,这是因为大多数控制字符都不是拿来显示用的. 该IBM扩展字符集被烧进无数显示卡和打印机的ROM中,并被许多应用程序用于修饰其文字模式的显示方式.不过,该字符集并没有为所有使用拉丁字母表的西欧语言提供足够多的带重音字符,而且也不适用于Windows.Windows不
9、需要图形字符,因为它有一个完全图形化的系统. 在Windows 1.0(1985年11月发行)中,Microsoft没有完全放弃IBM扩展字符集,但它已退居第二重要位置.因为遵循了ANSI草案和ISO标准,纯Windows字符集被称作ANSI字符集.ANSI草案和ISO标准最终成为ANSI/ISO 8859-1-1987,即American National Standard for Information Processing-8-Bit Single-Byte Coded Graphic Character Sets-Part 1: Latin Alphabet No 1,通常也简写为La
10、tin 1. 在Windows 1.0的Programmers Reference中印出了ANSI字符集的最初版本, 空方框表示该位置未定义字符.这与ANSI/ISO 8859-1的最终定义一致.ANSI/ISO 8859-1仅显示了图形字符,而没有控制字符,因此没有定义DEL.此外,代码0xA0定义为一个非断开的空格(这意味着在编排格式时,该字符不用于断开一行),代码0xAD是一个软连字符(表示除非在行尾断开单词时使用,否则不显示).此外,ANSI/ISO 8859-1将代码0xD7定义为乘号(*),0xF7为除号(/).Windows中的某些字体也定义了从0x80到0x9F的某些字符,但这
11、些不是ANSI/ISO 8859-1标准的一部分. MS-DOS 3.3(1987年4月发行)向IBM PC用户引进了代码页(code page)的概念,Windows也使用此概念.代码页定义了字符的映像代码.最初的IBM字符集被称作代码页437,或者MS-DOS Latin US).代码页850就是MS-DOS Latin 1,它用附加的带重音字母(但不是图2-2所示的Latin 1 ISO/ANSI标准)代替了一些线形字符.其它代码页被其它语言定义.最低的128个代码总是相同的;较高的128个代码取决于定义代码页的语言. 在MS-DOS中,如果用户为PC的键盘、显示卡和打印机指定了一个代码
12、页,然后在PC上创建、编辑和打印文件,一切都很正常,每件事都会保持一致.然而,如果用户试图与使用不同代码页的用户交换文件,或者在机器上改变代码页,就会产生问题.字符码与错误的字符相关联.应用程序能够将代码页信息与文件一起保存来试图减少问题的产生,但该策略包括了某些在代码页间转换的工作. 虽然代码页最初仅提供了不包括带重音符号字母的附加拉丁字符集,但最终代码页的较高的128个字符还是包括了完整的非拉丁字母,例如希伯来语、希腊语和斯拉夫语.自然,如此多样会导致代码页变得混乱;如果少数带重音的字母未正确显示,那么整个文字便会混乱不堪而不可阅读. 代码页的扩展正是基于所有这些原因,但是还不够.斯拉夫语
13、的MS-DOS代码页855与斯拉夫语的Windows代码页1251以及斯拉夫语的Macintosh代码页10007不同.每个环境下的代码页都是对该环境所作的标准字符集修正.IBM OS/2也支援多种EBCDIC代码页. 但等一下,你会发现事情变得更糟糕. 双字节字符集 迄今为止,我们已经看到了256个字符的字符集.但中国、日本和韩国的象形文字符号有大约21,000个.如何容纳这些语言而仍保持和ASCII的某种兼容性呢? 解决方案(如果这个说法正确的话)是双字节字符集(DBCS:double-byte character set).DBCS从256代码开始,就像ASCII一样.与任何行为良好的代
14、码页一样,最初的128个代码是ASCII.然而,较高的128个代码中的某些总是跟随着第二个字节.这两个字节一起(称作首字节和跟随字节)定义一个字符,通常是一个复杂的象形文字. 虽然中文、日文和韩文共享一些相同的象形文字,但显然这三种语言是不同的,而且经常是同一个象形文字在三种不同的语言中代表三件不同的事.Windows支持四个不同的双字节字符集:代码页932(日文)、936(简体中文)、949(韩语)和950(繁体汉字).只有为这些国家(地区)生产的Windows版本才支持DBCS. 双字符集问题并不是说字符由两个字节代表.问题在于一些字符(特别是ASCII字符)由1个字节表示.这会引起附加的
15、程序设计问题.例如,字符串中的字符数不能由字符串的字节数决定.必须剖析字符串来决定其长度,而且必须检查每个字节以确定它是否为双字节字符的首字节.如果有一个指向DBCS字符串中间的指针,那么该字符串前一个字符的地址是什么呢?惯用的解决方案是从开始的指针分析该字符串! Unicode解决方案 我们面临的基本问题是世界上的书写语言不能简单地用256个8位代码表示.以前的解决方案包括代码页和DBCS已被证明是不能满足需要的,而且也是笨拙的.那什么才是真正的解决方案呢? 身为程序写作者,我们经历过这类问题.如果事情太多,用8位数值已经不能表示,那么我们就试更宽的值,例如16位值.而且这很有趣的,正是Un
16、icode被制定的原因.与混乱的256个字符代码映像,以及含有一些1字节代码和一些2字节代码的双字节字符集不同,Unicode是统一的16位系统,这样就允许表示65,536个字符.这对表示所有字符及世界上使用象形文字的语言,包括一系列的数学、符号和货币单位符号的集合来说是充裕的. 明白Unicode和DBCS之间的区别很重要.Unicode使用(特别在C程序设计语言环境里)宽字符集.Unicode中的每个字符都是16位宽而不是8位宽.在Unicode中,没有单单使用8位数值的意义存在.相比之下,在双字节字符集中我们仍然处理8位数值.有些字节自身定义字符,而某些字节则显示需要和另一个字节共同定义
17、一个字符. 处理DBCS字符串非常杂乱,但是处理Unicode文字则像处理有秩序的文字.您也许会高兴地知道前128个Unicode字符(16位代码从0x0000到0x007F)就是ASCII字符,而接下来的128个Unicode字符(代码从0x0080到0x00FF)是ISO 8859-1对ASCII的扩展.Unicode中不同部分的字符都同样基于现有的标准.这是为了便于转换.希腊字母表使用从0x0370到0x03FF的代码,斯拉夫语使用从0x0400到0x04FF的代码,美国使用从0x0530到0x058F的代码,希伯来语使用从0x0590到0x05FF的代码.中国、日本和韩国的象形文字(总称为CJK)占用了从0x3000到0x9FFF的代码. Unicode的最大好处是这里只有一个字符集,没有一点含糊.Unicode实际上是个人计算机行业中几乎每个重要公司共同合作的结果,并且它与ISO 1064
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光伏电站个人年终总结模版
- 从概念到落地探讨如何利用区块链推动企业数字化转型
- 仓库厂房加盟合同范例
- 2025年初中数学教师年度考核个人总结模版
- 低价渔具转让合同范例
- 中介住宅租赁合同范例
- 在家长会上的小学生发言稿模版
- 创新研发背景下科技企业市场扩张风险控制策略
- 中英双语购销合同范例
- 医疗大数据时代的医疗质量管理
- 2023-2024学年人教版数学八年级下册期末复习试卷
- 工程人合伙协议书范本
- 第18课《在长江源头各拉丹东》课件+2023-2024学年统编版语文八年级下册
- 造纸化学品3课件
- 第五章-包装容器造型设计
- MOOC 介入放射学-东南大学 中国大学慕课答案
- 数字贸易学 课件 第1章 导论
- 广东省省级政务信息化(2024年第一批)项目需求-广东省财政厅业务系统运维运营服务(2024年)项目
- 寄拍行业分析
- 培训地坪漆课件
- 搪瓷制品的艺术创作与文化创意
评论
0/150
提交评论