字 符 编 码

        对于八种基本数据类型来说,其中七种类型 byte,short,int,long,float,double,boolean 计算机表示起来是很容易的,因为这七种类型底层直接就是数字,十进制的数字和二进制之间有固定的转换规则,所以计算机可直接表示和处理。但是,除了以上的七种数据类型之外,还有一种类型叫做字符型 char,这个对于计算机来说表示起来就不是那么容易了,因为字符毕竟是现实世界当中的文字,而文字每个国家又是不同的,计算机是如何表示文字的呢?

        实际上,起初的时候计算机只支持数字,因为计算机最初就是为了科学计算,随着计算机的发展,为了让计算机起到更大的作用,因此我们需要让计算机支持现实世界当中的文字,一些标准制定的协会就制定了字符编码(字符集),字符编码其实就是一张对照表,在这个对照表上描述了某个文字与二进制之间的对应关系。

        最初的时候美国标准协会制定了 ASCII 码,ASCII(American Standard Code for Information Interchange:美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。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-1,支持简体中文的编码方式包括GB2312、GBK、GB18030,而 Java 采用 unicode 编码,目前在实际的开发中大部分团队都会选择 UTF-8 的编码方式

        (本文仅代表个人观点,不喜勿喷!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值