ASCII到Unicode与UTF-8的字符编码探索

需积分: 0 1 下载量 90 浏览量 更新于2024-07-31 收藏 6.1MB DOC 举报
"字符编码笔记:ASCII,Unicode和UTF-8" 字符编码是计算机处理文本的基础,它定义了字符与数字之间的映射关系。在深入理解Unicode和UTF-8之前,我们先回顾一下ASCII码,它是字符编码的起点。 1. ASCII码 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是最早广泛采用的字符编码系统,设计于1963年,主要用于英语。它使用7位二进制来表示128个不同的字符,包括大小写字母、数字、标点符号以及控制字符。每个ASCII字符占据一个字节,但字节的最高位通常是0,用于区分ASCII码和其他可能的扩展编码。 2. 非ASCII编码 随着多语言需求的增长,ASCII码的局限性逐渐显现。欧洲国家为了表示更多的字符,开始使用8位字节的全部位,创建了各种本地化编码,如ISO-8859系列,其中每个字节可以表示256个不同的字符。然而,这些编码互不兼容,导致了跨语言文本处理的混乱,尤其是在网络传输和多国语言混合的文档中。 3. Unicode 为了解决这一问题,Unicode应运而生。Unicode是一个国际标准,旨在为世界上几乎所有的文字提供一个唯一的数字标识,无论其语言或平台。Unicode集合包含了超过14万个字符,涵盖了世界上大部分已知的语言。它使用16位或32位的整数来表示每个字符,从而能够涵盖大量字符集。 4. UTF-8编码 虽然Unicode提供了统一的字符集,但不同平台和系统对存储和传输的要求各异。UTF-8是一种变长的Unicode编码方式,它根据字符的不同范围使用1至4个字节来表示。UTF-8的巧妙之处在于,它保持了ASCII字符的编码不变,即前128个Unicode字符(与ASCII相同)用单个字节表示,这样确保了与ASCII兼容,并且在处理英文文本时效率较高。对于非ASCII字符,UTF-8使用更长的字节序列,这种设计使得UTF-8在互联网上广泛使用,因为它是网络传输和文件存储的首选编码。 简体中文的编码方式之一是GB2312,它是中国国家标准,主要用于简化汉字的表示,包含6763个汉字以及其他符号。后来,GBK和GB18030等编码进一步扩展了字符集,以支持更多汉字和少数民族文字。 总结起来,字符编码从最初的ASCII码到Unicode,再到适应多种语言环境的UTF-8,经历了从简单到复杂,从单一到包容的过程。理解这些编码系统的工作原理,对于编写程序、处理文本和解决跨语言交流问题至关重要。在今天的数字化世界里,掌握字符编码知识是每个IT从业者的基本功。
2011-04-12 上传
字符编码的问题看似很小,经常被技术人员忽视,但是很容易导致一些莫名其妙的问题。这里总结了一下字符编码的一些普及性的知识,希望对大家有所帮助。 还是得从ASCII码说起 说到字符编码,不得不说ASCII码的简史。计算机一开始发明的时候是用来解决数字计算的问题,后来人们发现,计算机还可以做更多的事,例如文本处理。但由于计算机只识“数”,因此人们必须告诉计算机哪个数字来代表哪个特定字符,例如65代表字母‘A’,66代表字母‘B’,以此类推。但是计算机之间字符-数字的对应关系必须得一致,否则就会造成同一段数字在不同计算机上显示出来的字符不一样。因此美国国家标准协会ANSI制定了一个标准,规定了常用字符的集合以及每个字符对应的编号,这就是ASCII字符集(Character Set),也称ASCII码。 当时的计算机普遍使用8比特字节作为最小的存储和处理单元,加之当时用到的字符也很少,26个大小写英文字母还有数字再加上其他常用符号,也不到 100个,因此使用7个比特位就可以高效的存储和处理ASCII码,剩下最高位1比特被用作一些通讯系统的奇偶校验。 注意,字节代表系统能够处理的最小单位,不一定是8比特。只是现代计算机的事实标准就是用8比特来代表一个字节。在很多技术规格文献中,为了避免产生歧义,更倾向于使用8位组(Octet)而不是字节(Byte)这个术语来强调8个比特的二进制流。下文中为了便于理解,我会延用大家熟悉的“字节”这个概念。