一.基本概念
- 字符集(Charset)就是一组抽象字符的集合。
- 字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。
- 一组有共同特征的字符也可以组成字符集,比如繁体汉字字符集、日文汉字字符集。
- 我们知道计算机内部是用二进制表示数据的,计算机要处理各种字符,就需要将字符和二进制内码对应起来,这种对应关系就是字符编码(Encoding)。
- 制定编码首先要确定字符集,并将字符集内的字符排序,然后和二进制数字对应起来。
- 根据字符集内字符的多少,会确定用几个字节来编码。
- 每种编码都限定了一个明确的字符集合,叫做被编码过的字符集(Coded Character Set),这是字符集的另外一个含义。通常所说的字符集大多是这个含义。下文我还是以字符编码这个词来描述。
二.有哪些字符编码
- 标准ASCII
- 扩展ASCII
- ISO 8859系列
- GB系列
- UCS
- Unicode
三.标准ASCII编码
ASCII: American Standard Code for Information Interchange,美国信息交换标准码。
- ASCII规定了128个字符(空格、标点符号、数字、大小写字母),以及其对于的128个二进制表示(0000 0000 - 01111 1111)。
- 一个ASCII码值占一个字节(8个二进制位),标准(原生态)ASCII表中最高位(b7)用作奇偶校验位,其它的七位就表示上面说的128个字符。
- 有时候面试官会问,字符'A'对于的ASCII值是多少,还是记住这些吧。'A'=65,'a'=97,'0'=48。
四.扩展ASCII编码
- ISO 8859 - 数字:ISO 8859,全称ISO/IEC 8859,是国际标准化组织(ISO)及国际电工委员会(IEC)联合制定的一系列8位字符集的标准。
- 标准ASCII收录了空格及94个“可印刷字符”,足以给英语使用。但是,其他使用拉丁字母的语言(主要是欧洲国家的语言),都有一定数量的变音字母,于是它们利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制1000 0010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。
- 但是,地区和地区之间在使用这个闲置的最高位时,并不是一致的啊,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。于是产生了ISO 8859-数字 表示不同地区的编码。
* ISO 8859-1 (Latin-1) - 西欧语言
* ISO 8859-2 (Latin-2) - 中欧语言
* ISO 8859-3 (Latin-3) - 南欧语言。世界语也可用此字符集显示。
* ISO 8859-4 (Latin-4) - 北欧语言
* ISO 8859-5 (Cyrillic) - 斯拉夫语言
* ISO 8859-6 (Arabic) - 阿拉伯语
* ISO 8859-7 (Greek) - 希腊语
* ISO 8859-8 (Hebrew) - 希伯来语(视觉顺序)
* ISO 8859-8-I - 希伯来语(逻辑顺序)
* ISO 8859-9 (Latin-5 或 Turkish) - 它把Latin-1的冰岛语字母换走,加入土耳其语字母。
* ISO 8859-10 (Latin-6 或 Nordic) - 北日耳曼语支,用来代替Latin-4。
* ISO 8859-11 (Thai) - 泰语,从泰国的 TIS620 标准字集演化而来。
* ISO 8859-13 (Latin-7 或 Baltic Rim) - 波罗的语族
* ISO 8859-14 (Latin-8 或 Celtic) - 凯尔特语族
* ISO 8859-15 (Latin-9) - 西欧语言,加入Latin-1欠缺的法语及芬兰语重音字母,以及欧元符号。
* ISO 8859-16 (Latin-10) - 东南欧语言。主要供罗马尼亚语使用,并加入欧元符号。
- 所有这些编码方式中,0-127表示的符号是一样的,不一样的只是128—255的这一段。兼容ASCII。
- 记住ISO 8895 - 数字仍然是单字节编码。
- GB类
- GB2312:使用2个字节表示,包括6763个汉字。几乎覆盖所有高频率汉字。低字节兼容ASCII。
- GBK:使用2个字节表示,包括21003个汉字。是GB2312的扩展,加入对繁体字的支持,兼容GB2312。
- BIG5:使用2个字节表示,包括国标繁体汉字13053。是台湾繁体字集。
- GB18030:它采用变字节表示(1 ASCII,2,4字节),包括27484个汉字。
- UCS:通用字符集(Universal Character Set,UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的字符编码方式。
- 采用4个字节编码。
- UCS包含了已知语言的所有字符。除了拉丁语、希腊语、斯拉夫语、希伯来语、阿拉伯语、亚美尼亚语、格鲁吉亚语,还包括中文、日文、韩文这样的象形文字,UCS还包括大量的图形、印刷、数学、科学符号。
- * UCS-2: 2byte编码,与unicode的2byte编码基本一样。
* UCS-4: 4byte编码,目前是在UCS-2前加上2个全零的byte。 所以从编码内容上看UCS=Unicode。
- Unicode:统一码、万国码、单一码
- Unicode为世界650种语言进行统一编码,兼容ISO-8859-1。
- 采用2个字节编码。实际上目前版本的Unicode尚未填充满这2个字节,保留了大量空间作为特殊使用或将来扩展。
五.编码实现方式
Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。UTF(UCS Transfer Format)。
- UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。
-
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
-
Unicode转换成UTF-8
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
六.本文侧重点
本文主要侧重把常见编码方式进行分类,以及它们之间的兼容性。没有谈到每种编码的字节什么范围到什么范围保存数据。
六.参考文章
- http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
- http://turandot.iteye.com/blog/1703258
只是对上述文章的一个理解和整理,欢迎拍砖,欢迎指正。
分享到:
相关推荐
配合《计算机组成原理》第三版的资源包,学生可以进一步了解每个知识点的具体实现,通过实例和练习加深理解,同时可能还有教师讲解视频、课后习题答案,以及相关的实验项目,帮助学生巩固所学知识,提升实践能力。...
本习题集共包含四十套试卷,意味着涵盖了大量练习题目,可以帮助学习者巩固和深化对计算机组成原理的理解。通过反复练习,不仅能掌握基本概念,还能提高分析和解决问题的能力,为未来在计算机领域的深入学习和研究...
在这个案例中,它很可能是唐硕飞版《计算机组成原理》的答案集或解析,包含了一系列问题的解答和解释。 在计算机组成原理中,我们通常会接触到以下几个关键知识点: 1. **数制与编码**:包括二进制、八进制、十...
在学习计算机组成原理时,我们会接触到以下几个关键知识点: 1. **数据表示与运算**:包括二进制、八进制、十六进制的转换,数值和字符的编码(如ASCII码),以及算术逻辑单元(ALU)的运算原理,如加法、减法、位...
计算机组成原理是计算机科学与技术领域的一门基础课程,它主要研究计算机系统的基本构造和工作原理。本实验题答案集围绕这一主题,旨在帮助学生深入理解计算机内部运作机制,掌握数据表示、运算器设计、存储系统、...
计算机组成原理是一门研究计算机系统结构、组织、设计及评估的基础课程,它旨在为学习计算机科学与技术的初学者提供一个系统性的理解计算机工作原理的框架。该课程的内容涵盖了计算机硬件的基本组成部分,包括中央...
计算机组成原理是计算机科学与技术专业的一门核心课程,它主要研究计算机系统中硬件部分的结构、设计原理以及数据在计算机内部的表示和处理。宁波大学的这门课程的期末试卷与答案打包下载,为学生提供了宝贵的复习...
【计算机组成原理】是计算机科学领域的一门基础课程,主要探讨计算机硬件系统的基本构成和工作原理。这门课程涵盖了从最底层的逻辑门电路到高级的处理器架构、内存系统、输入输出(I/O)接口等核心概念。王朔飞版本的...
本书即为《计算机组成原理》,涵盖原书前三部分,共6章,主要介绍计算机系统的组成和体系结构的基本概念、指令系统以及处理器实现等涉及计算机组成原理课程的内容。 目录: 第1章 计算机系统体系结构 4 1.1 什么是...
计算机组成原理是IT领域的基础课程,它主要探讨的是计算机硬件系统的结构、工作原理以及它们如何协同执行指令。...通过学习计算机组成原理,IT人员可以更好地理解软件和硬件的交互,提升系统优化和问题排查的能力。
这份"计算机组成原理- 杭州电子科技大学期末试卷"无疑是学习者了解该课程考试重点、提升理解的重要参考资料。 试卷通常涵盖了以下几个核心知识点: 1. **数制与编码**:包括二进制、八进制、十进制、十六进制之间...
1. 数据表示:在计算机中,数据以二进制形式存在,包括整数、浮点数和字符编码等。了解二进制、八进制、十六进制的转换,以及原码、反码、补码的表示方式,是理解数据在计算机内部处理的基础。 2. 运算器设计:运算...
在学习计算机组成原理时,我们通常会接触到以下几个重要的知识点: 1. **数字系统与编码**:包括二进制、八进制、十六进制的转换,以及BCD码、ASCII码等字符编码方式。理解这些编码系统对于理解和处理计算机中的...
"西工大计算机组成原理试题"包含了针对这门课程的考试试卷及其对应的答案,为学习者提供了自我测试和深入学习的机会。 首先,让我们来看看计算机组成原理的一些核心知识点: 1. **数据表示与运算**:包括二进制、...
2. ASCII码与Unicode编码:了解字符编码的标准及其在计算机中的应用。 3. 位运算:理解位与、位或、位异或、位非等操作的含义和用途。 七、数的表示与运算 1. 定点数与浮点数:理解定点数和浮点数的表示方式,以及...
2. **数据表示**:涵盖二进制、八进制、十进制和十六进制间的转换,以及二进制补码表示法、浮点数表示、字符编码(ASCII和Unicode)等。 3. **运算器**:详述算术逻辑单元(ALU)的工作原理,包括加减乘除运算、位...
《计算机组成原理》是计算机科学领域的一门核心课程,它主要涵盖了计算机硬件系统的基本组成、工作原理以及数据处理的方式。...在实际的学习过程中,结合教材和这份答案,可以更有效地掌握计算机组成原理的核心概念。
《计算机组成原理》是计算机科学与技术领域的一门基础课程,它主要研究计算机硬件系统的基本概念、设计原理和实现方法。...学习计算机组成原理对于理解计算机硬件的工作方式,进而优化软件性能和解决问题具有重要意义。
《计算机组成原理》是计算机科学与技术专业的一门核心课程,由著名计算机教育家白中英教授编著的教材在业内具有广泛影响力。这门课程深入讲解了计算机硬件系统的各个组成部分,包括运算器、控制器、存储器、输入/...