首页 > 代码库 > java 21 - 1 IO流中的字符流概述

java 21 - 1 IO流中的字符流概述

字节流通过读取一个byte数组的方式可以读取中文的,但是有可能出现小问题,所以,读取中文最好是用字符流。

字符流:

  字符流=字节流+编码表。

编码表:

  由字符及其对应的数值组成的一张表

编码表介绍:

计算机只能识别二进制数据,早期由来是电信号。 为了方便应用计算机,让它可以识别各个国家的文字。 就将各个国家的文字用数字来表示,并一一对应,形成一张表。

ASCII:美国标准信息交换码。 用一个字节的7位可以表示。

ISO8859-1:拉丁码表。欧洲码表 用一个字节的8位表示。

GB2312:中国的中文编码表。

GBK:中国的中文编码表升级,融合了更多的中文文字符号。

GB18030:GBK的取代版本

BIG-5码 :通行于台湾、香港地区的一个繁体字编码方案,俗称“大五码”。

Unicode:国际标准码,融合了多种文字。 所有文字都用两个字节来表示,Java语言使用的就是unicode

UTF-8:最多用三个字节来表示一个字符。

UTF-8不同,它定义了一种“区间规则”,这种规则可以和ASCII编码保持最大程度的兼容:

它将Unicode编码为00000000-0000007F的字符,用单个字节来表示

它将Unicode编码为00000080-000007FF的字符用两个字节表示 

它将Unicode编码为00000800-0000FFFF的字符用3字节表示 

  我们常用的是GBK和UTF-8。

 

既然有编码,那么就有解码,那么,编码和解码都是什么呢?

编码:把看得懂的变成看不懂的

  String ------- byte[]

解码:把看不懂的变成看不懂的

  byte[] ------- String

最经典的例子就是抗日神剧里面的电报,滴滴滴响个不停的那个

其实在神剧里面,电报员手上的小本子就是编码表。里面记录着字符和所对应的数值

编码过程(发电报):发“你”这个字,步骤:

  你 --- 对应的数值 ---- 二进制 ----发送

解码过程(读电报):

  接收 --- 二进制 --- 十进制 --- 数值 --- 找到“你”

注意:编码解码的格式必须一致的,就是必须使用的是同一种编码表,否则牛头不对马嘴

 

java 21 - 1 IO流中的字符流概述