ASCII(pronunciation: /ˈæski/ ASS-kee[1],American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本EASCII则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646。由于万维网使得ASCII广为通用,直到2007年12月,逐渐被Unicode取代ASCII第一次以规范标准的型态发表是在1967年,最后一次更新则是在1986年,至今为止共定义了128个字符;其中33个字符无法显示(这是以现今操作系统为依归,但在DOS模式下可显示出一些诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33个字符之外的是95个可显示的字符,包含用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)
ISO 8859-1,正式编号为ISO/IEC 8859-1:1998,又称Latin-1或“西欧语言”,是国际标准化组织内ISO/IEC 8859的第一个8位字符集。它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入96个字母及符号,藉以供使用附加符号的拉丁字母语言使用。曾推出过 ISO 8859-1:1987 版。
此字符集支持部分于欧洲使用的语言,包括阿尔巴尼亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、法罗语、弗里西语、加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语、意大利语、拉丁语、卢森堡语、挪威语、葡萄牙语、里托罗曼斯语、苏格兰盖尔语、西班牙语及瑞典语。
英语虽然没有重音字母,但仍会标明为ISO/IEC 8859-1编码。除此之外,欧洲以外的部分语言,如南非荷兰语、斯瓦希里语、印尼语及马来语、菲律宾他加洛语等也可使用ISO/IEC 8859-1编码。
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF | |||||||||||||||
SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
@ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | |
NBSP | ¡ | ¢ | £ | ¤ | ¥ | ¦ | § | ¨ | © | ª | « | ¬ | SHY | ® | ¯ |
° | ± | ² | ³ | ´ | µ | ¶ | · | ¸ | ¹ | º | » | ¼ | ½ | ¾ | ¿ |
À | Á | Â | Ã | Ä | Å | Æ | Ç | È | É | Ê | Ë | Ì | Í | Î | Ï |
Ð | Ñ | Ò | Ó | Ô | Õ | Ö | × | Ø | Ù | Ú | Û | Ü | Ý | Þ | ß |
à | á | â | ã | ä | å | æ | ç | è | é | ê | ë | ì | í | î | ï |
ð | ñ | ò | ó | ô | õ | ö | ÷ | ø | ù | ú | û | ü | ý | þ | ÿ |
在上表中,0x20是空格、0xA0是不换行空格、0xAD是选择性连接号
Unicode的编码和实现
大概来说,Unicode编码系统可分为编码方式和实现方式两个层次。
编码方式
统一码的编码方式与ISO 10646的通用字符集概念相对应。目前实际应用的统一码版本对应于UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示216(即65536)个字符。基本满足各种语言的使用。实际上当前版本的统一码并未完全使用这16位编码,而是保留了大量空间以作为特殊使用或将来扩展
实现方式
Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format,简称为UTF)
例如,如果一个仅包含基本7位ASCII字符的Unicode文件,如果每个字符都使用2字节的原Unicode编码传输,其第一字节的8位始终为0。这就造成了比较大的浪费。对于这种情况,可以使用UTF-8编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到与其他Unicode字符混合的情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为0或1进行识别。这样对以7位ASCII字符为主的西文文档就大大节省了编码长度(具体方案参见UTF-8)。类似的,对未来会出现的需要4个字节的辅助平面字符和其他UCS-4扩充字符,2字节编码的UTF-16也需要通过一定的算法进行转换。
再如,如果直接使用与Unicode编码一致(仅限于BMP字符)的UTF-16编码,由于每个字符占用了两个字节,在麦金塔计算机(Mac)机和个人计算机上,对字节顺序的理解是不一致的。这时同一字节流可能会被解释为不同内容,如某字符为十六进制编码4E59,按两个字节拆分为4E和59,在Mac上读取时是从低字节开始,那么在Mac OS会认为此4E59编码为594E,找到的字符为“奎”,而在Windows上从高字节开始读取,则编码为U+4E59的字符为“乙”。就是说在Windows下以UTF-16编码保存一个字符“乙”,在Mac OS环境下打开会显示成“奎”。此类情况说明UTF-16的编码顺序若不加以人为定义就可能发生混淆,于是在UTF-16编码实现方式中使用了大端序(Big-Endian,简写为UTF-16 BE)、小端序(Little-Endian,简写为UTF-16 LE)的概念,以及可附加的字节顺序记号解决方案,目前在PC机上的Windows系统和Linux系统对于UTF-16编码默认使用UTF-16 LE。(具体方案参见UTF-16)
此外Unicode的实现方式还包括UTF-7、Punycode、CESU-8、SCSU、UTF-32、GB18030等,这些实现方式有些仅在一定的国家和地区使用,有些则属于未来的规划方式。目前通用的实现方式是UTF-16小端序(LE)、UTF-16大端序(BE)和UTF-8。在微软公司Windows XP附带的记事本(Notepad)中,“另存为”对话框可以选择的四种编码方式除去非Unicode编码的ANSI(对于英文系统即ASCII编码,中文系统则为GB2312或Big5编码)外,其余三种为“Unicode”(对应UTF-16 LE)、“Unicode big endian”(对应UTF-16 BE)和“UTF-8”
GBK
1993年,Unicode 1.1版本推出,收录中国大陆、台湾、日本及韩国通用字符集的汉字,总共有20,902个
由于GB 2312-80只收录6763个汉字,有不少汉字,如部分在GB 2312-80推出以后才简化的汉字(如“啰”),部分人名用字(如中国前总理朱镕基的“镕”字),台湾及香港使用的繁体字,日语及朝鲜语汉字等,并未有收录在内。于是厂商微软利用GB 2312-80未使用的编码空间,收录GB 13000.1-93全部字符制定了GBK编码
根据微软资料,GBK是对GB2312-80的扩展,也就是CP936字码表
GBK向下完全兼容GB2312-80编码。 支持GB2312-80编码不支持的部分中文姓,中文繁体,日文假名,还包括希腊字母以及俄语字母等字母。不过这种编码不支持韩国字,也是其在实际使用中与unicode编码相比欠缺的部分。
编码方式
字符有一字节和双字节编码,00
–7F
范围内是一位,和ASCII保持一致,此范围内严格上说有96个文字和32个控制符号。
之后的双字节中,前一字节是双字节的第一位。总体上说第一字节的范围是81
–FE
(也就是不含80
和FF
),第二字节的一部分领域在40
–7E
,其他领域在80
–FE
GB 18030,全称:国家标准GB 18030-2005《信息技术 中文编码字符集》,是中华人民共和国现时最新的内码字集,是GB 18030-2000《信息技术 信息交换用汉字编码字符集 基本集的扩充》的修订版。与GB 2312-1980完全兼容,与GBK基本兼容,支持GB 13000及Unicode的全部统一汉字,共收录汉字70244个。
GB 18030主要有以下特点:
- 代码页 54936
- 与 UTF-8 相同,采用多字节编码,每个字可以由1个、2个或4个字节组成。
- 编码空间庞大,最多可定义161万个字符。
- 支持中国国内少数民族的文字,不需要动用造字区。
- 汉字收录范围包含繁体汉字以及日韩汉字。
本规格的初版是由中华人民共和国信息产业部电子工业标准化研究所起草,由国家质量技术监督局于2000年3月17日发布。现行版本为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5月1日实施。
此标准内的单字节编码部分、双字节编码部分,和四字节编码部分收录的中日韩统一表意文字扩展A区汉字,为强制性标准。其他部分则属于规模性标准。在中华人民共和国境内所有软件产品,都需要支持这个同时包含单字节、双字节和四字节编码的规格
Big5,又称为大五码或五大码,是使用繁体中文(繁体中文)社区中最常用的计算机汉字字符集标准,共收录13,060个汉字[1]。
中文码分为内码及交换码两类,Big5属中文内码,知名的中文交换码有CCCII、CNS11643。
Big5虽普及于台湾、香港与澳门等繁体中文通行区,但长期以来并非当地的国家标准,而只是业界标准
由于Big5码内的一万多个字,只是根据台湾教育部颁布的《常用国字标准字体表》、《次常用国字标准字体表》等用字汇编而成,并没有考虑社会上流通的人名、地名用字、方言用字、化学及生物科学等用字,亦没有放入日语平假名及片假名字母
由于各厂商及政府推出的Big5延伸,彼此互不兼容,造成乱码问题。鉴于Unicode能正确地处理七万多个汉字,近年的操作系统和应用程序(如苹果计算机Mac OS X和以Cocoa API撰写之程序、Microsoft Windows 2000及之后版本、Microsoft Office 2000及之后版本、Mozilla浏览器、Internet Explorer浏览器、Java语言等等),已改用Unicode编码。可惜现时仍有一些旧的软件(如Visual Basic 6、部分Telnet或BBS软件),未能支持Unicode编码,故相信Big5缺字的问题仍会困扰用户一段时间,直至所有程序都能改用Unicode为止。
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
UTF-8使用一至六个字节为每个字符编码(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多4位字节):
- 128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。
- 带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节编码(Unicode范围由U+0080至U+07FF)。
- 其他基本多文种平面(BMP)中的字符(这包含了大部分常用字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。
- 其他极少使用的Unicode 辅助平面的字符使用四至六字节编码(Unicode范围由U+10000至U+1FFFFF使用四字节,Unicode范围由U+200000至U+3FFFFFF使用五字节,Unicode范围由U+4000000至U+7FFFFFFF使用六字节)
相关推荐
计算机编码是信息技术领域中的基础概念,它涉及到数据在计算机系统中的表示方式,是实现信息存储、处理和传输的关键技术。根据题目中提供的信息,“计算机编码”这一主题主要围绕着计算机中数字、字符以及数据的编码...
计算机编码是计算机科学中的基础概念,涉及到数据在计算机内部的表示方式。以下是对题目中涉及的知识点的详细解释: 1. 区位码输入法的最大优点是A、一字一码,无重码。这意味着每个汉字都有唯一对应的编码,避免了...
NYT 2137-2012 农产品市场信息分类与计算机编码.pdf
【计算机编码】是计算机科学中的基础概念,涵盖了数制转换、数据存储单位、信息编码以及字符编码等多个方面。首先,让我们深入理解数制及其转换。 数制,又称计数制,是一个表示数值的方法,它由固定的符号(如0和1...
计算机编码大全.pdf 计算机编码大全.pdf是一本涵盖计算机编码的基础知识的电子书籍。下面是从这本电子书籍中提取的重要知识点: 1. 计算机编码的基本单元:位(bit)和字节(Byte) 计算机编码的基本单元是位...
计算机编码是计算机科学中的基础概念,它涉及到如何在二进制的世界中表示和处理人类语言。在《计算机编码与Unicode》的PPT课件中,深入探讨了字符编码的各个方面,特别是Unicode编码体系,这对于理解多语言环境下的...
计算机编码是计算机科学中的核心概念,它涉及到计算机如何理解和存储人类可读的文本。编码的主要目的是将字符(字母、数字、标点符号等)转换成机器可以处理的数字形式,以便进行存储、传输和处理。 首先,让我们...
汉字的计算机编码是将汉字转化为计算机可识别的形式,以便在计算机系统中存储、处理和传输。常见的汉字编码方式包括音码、型码、音型码和流水码。 1. 音码:音码是根据汉字的发音来创建的编码,如拼音输入法,使用...
计算机编码知识,尤其是字符编码,是计算机科学中的基础概念,它涉及到如何在计算机内部表示和处理文本。VB6.0,即Visual Basic 6.0,是微软开发的一种面向对象的编程语言,它同样需要理解字符编码以便正确处理文本...
计算机编码.pdf
在标签"计算机 编程"中,我们可以预见到这本书将重点讨论计算机编码与编程之间的联系。编程是计算机科学的另一个重要分支,是通过编写代码来告诉计算机如何执行任务的过程。编码技术是编程的基础,因为它涉及到将...
《编码:隐匿在计算机软硬件背后的语言》是由美国作者佩措尔德撰写的一本深入浅出介绍计算机编码原理和技术的著作。这本书以其完整的版本,提供了清晰的页面和标签目录,便于读者系统地理解和探索这个复杂的领域。 ...
《编码——隐匿在计算机软硬件背后的语言》是一本深入探讨计算机编码原理和技术的书籍,旨在揭示隐藏在计算机软硬件背后的神秘语言。编码,作为计算机科学的基础,是连接人类世界和机器世界的桥梁,使得我们可以与...
本书用大量的篇幅讲述了与计算机原理相关的各种编码方法,并通过数字逻辑电路以及存储器,微处理器的形成,组织及发展阐述了编码的实现。本书还涉及到计算机系统,编程语言的发展,甚至对计算机图形化的相关技术也给...
计算机编码表是计算机科学中的基础概念,用于定义字符与二进制数字之间的对应关系,确保计算机能够正确理解和处理各种字符。编码表的发展历程反映了人类语言多样性和计算机存储需求的不断演变。 1. ASCII码(美国...