java基础语法之字符编码

计算机存储信息的最小单位,称之为位(bit),音译比特,二进制的一个“0”或一个“1”叫一位。

字节

字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位,8个二进制位组成1个字节。在ASCII码中,一个标准英文字母(不分大小写)占一个字节位置,一个标准汉字占二个字节位置。

什么是字符编码

我们平时在使用计算机时,用的都是人类能读懂的字符(用高级语言编程的结果也无非是在文件内写了一堆字符),如何能让计算机读懂人类的字符?必须经过一个过程:字符--------(翻译过程)------->数字 8这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码。从明文到编码文本的转换称为“编码”,从编码文本又转回成明文则为“解码”。

字符集

只是一个规则集合的名字,对应到真实生活中,字符集就是对某种语言的称呼.

注意:java中使用的字符编码是unicode

字符编码分类

ASCII 码

最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。ascll 最左边一位是0,开始设计为7位,预留一位后续扩展。

中国自己的字符编码的诞生GBK

  GB2312在兼容了标准ASCII的基础上,GB2312收录了简化汉字、符号、字母.使用两个字节表示中文字符.在中国大陆使用

Unicode

  Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等

  Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

  unicode四个字节来表示汉字,是不可变自长,极大的浪费了存储空间

UTF-8

  UTF-8是一种变长编码方式,使用1-4个字节进行编码。UTF-8完全兼容ASCII,对于ASCII中的字符,UTF-8采用的编码值跟ASCII完全一致。UTF-8是Unicode一种具体的编码实现。UTF-8是在互联网上使用最广的一种Unicode的编码规则,因为这种编码有利于节约网络流量(因为变长编码,而非统一长度编码)

总结:1:各个编码之间的二进制互相不认识,是不能识别的,会产生乱码

   2: 内存中统一采用unicode,浪费空间来换取可以转换成任意编码(不乱码)。Unicode不能用做在硬盘中的存储,和文件之间的传输。(Unicode浪费了空间,减少了效率)

           3 : 硬盘和传输必须要采用各种编码,如utf-8,保证存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性.

           4 :内存中的数据要 传输和存储,必须编码(str 转化为bytes类型,本质就是Unicode转化为别的字符集如utf-8,jbk

猜你喜欢

转载自blog.csdn.net/weixin_44462792/article/details/86222033
今日推荐