用户:
Godeyes查看:1 回复:6 评论:1 创建时间:2020-04-29T07:16:46
哈喽,大家好,我是一名敲击小萌新--Godeyes!!勤奋的我今天又来教大家java从入门到入土(滑稽)

6.3字符编码(理解)
对于以上的八种基本数据类型来说,其中七种类型byte,short,int,long,float,double,boolean计算机表示起来是很容易的,因为这七种类型底层直接就是数字,十进制的数字和二进制之间有固定的转换规则,所以计算机可直接表示和处理。但是大家别忘了,除了以上的七种数据类型之外,还有一种类型叫做字符型 char,这个对于计算机来说表示起来就不是那么容易了,因为字符毕竟是现实世界当中的文字,而文字每个国家又是不同的,计算机是如何表示文字的呢?
实际上,起初的时候计算机只支持数字,因为计算机最初就是为了科学计算,随着计算机的发展,为了让计算机起到更大的作用,因此我们需要让计算机支持现实世界当中的文字,一些标准制定的协会就制定了字符编码(字符集),字符编码其实就是一张对照表,在这个对照表上描述了某个文字与二进制之间的对应关系。
科普时间
最初的时候喵标准协会制定了 ASCII 码,ASCII(American Standard Code for Information Interchange:(喵信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的信息交换标准,并等同于国际标准 ISO/IEC 喵6。ASCII 码采用 1 个字节编码,1 个字节可以表示 256 种不同的形式(前面说过了),对于英文来说这个足够了,因为英文单词就是由 26 个英文字母拼凑而成,大小写全部才 52 个,再加上数字和标点符号也不会超过 256 个。但 ASCII 码对于中文来说那就不够了,因为汉字不止 256个。(只需了解)
常见的 ASCII 码需要大家能够记住几个,在 ASCII 码中规定'a'对应 97,'b'对应 98,以此类推,'A'对应 65,'B'对应 66,以此类推,'0'字符对应 48,'1'字符对应 49,以此类推,这些常见的编码还是需要大家记住的。(重点)
在字符编码当中,有这样两个常见的术语需要大家了解一下:编码和解码,它们都是什么,我们拿字符'a'来解释一下:'a'是 97,97 对应的二进制是 01100001,那么从'a'到二进制 01100001的转换过程称为编码,从二进制 01100001 到'a'的转换过程称为解码。大家一定要注意:编码和解码要采用同一种字符编码方式(要采用同一个对照表),不然会出现乱码。这也是乱码出现的本质原因。
随着计算机的不断发展,为了让计算机支持更多国家的语言,国际标准组织又制定了ISO-8859-1 字符集,又被称为 latin-1,向上兼容 ASCII 码,仍不支持中文,主要支持西欧语言。再后来,计算机慢慢的开始支持简体中文、繁体中文、日本语、朝鲜语等,其中支持简体中文的字符集包括:GB2312 、GBK 、GB18030,它们的容量大小不同,其中 GB2312 < GBK < GB18030。支持繁体中文的是大五码 Big5 等。后来,在上世纪 90 年代初,国际组织制定了一种字符编码方式,叫做 Unicode 编码,这种编码方式统一了全球所有国家的文字,具体的实现包括:UTF-8,UTF-16,UTF-32 等。(了解一下)
Java 为了国际化,为了支持所有国家的语言,所以 Java 采用的编码方式为 Unicode 编码。例如字符'中'对应的 Unicode 码是'\u4e2d'。在实际开发中几乎所有的团队都会使用 Unicode 编码方式,因为这种方式更通用,兼容性更好。
小节总结
通过本小节的学习,大家需要理解字符编码是什么,有什么作用,常见的 ASCII 码要知道一些,另外要理解什么是编码,什么是解码,要知道编码和解码采用的字符编码方式不同时会出现乱码,还要知道国际通用的编码方式为 ISO-8859- ,支持简体中文的编码方式包括GB2312、GBK、GB18030,而 Java 采用 unicode 编码,目前在实际的开发中大部分团队都会选择 UTF-8 的编码方式。
GodeyesJava学习教程(第一章)[介绍java]:https://shequ.codemao.cn/community/281707
java学习教程(第二章)[java的注释]:https://shequ.codemao.cn/community/281722
Java(第三章)[编写第一个java程序]:https://shequ.codemao.cn/community/281753
Java(特殊篇)[运行和编译java程序]:https://shequ.codemao.cn/community/281785
Java学习教程(第四章)[标识符与关键字]:https://shequ.codemao.cn/community/282020
Java学习教程(第五章)[变量]{1.字面量}:https://shequ.codemao.cn/community/282531
Java学习教程(第五章)[变量]{变量概述}:https://shequ.codemao.cn/community/283059
Java学习教程(第五章)[变量]{使用变量}:https://shequ.codemao.cn/community/283194
[教程帖]Java学习教程第五章[变量]{变量分类}:https://shequ.codemao.cn/community/283732
[教程帖]Java学习教程(第五章)[变量]{变量作用域和章节总结}:https://shequ.codemao.cn/community/283745
[教程帖]Java学习教程(第六章)[数据类型]{数据类型概述}:https://shequ.codemao.cn/community/284512
[教程帖]Java学习教程(第六章)[数据类型]{字符编码}:https://shequ.codemao.cn/community/285286
点赞0
评论