提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
转换流实际上是一种处理流,它的作用是使字节流和字符流之间能相互转换。I/O流中的两类转换流:InputStreamReader 和 OutputStreamWriter。其中InputStreamReader将字节输入流转为字符输入流,继承自Reader。OutputStreamWriter是将字符输出流转为字节输出流,继承自Writer。
提示:以下是本篇文章正文内容,下面案例可供参考
一、概述
我们都知道,计算机中使用二进制数字 0 1 存储数据,我们在电脑上看到的文字信息是通过将二进制转换之后显示的,两者之间的转换其实是编码与解码的过程。而编码和解码转换之间是需要遵循规则的,即编码和解码都遵循同一种规则才能将文字信息正常显示,如果编码跟解码使用了不同的规则,就会出现乱码的情况。而我们今天要谈的转换流,其实就是编码和解码过程,
编码:字符 、字符串 ( 能看懂的 ) -----------> 字节(看不懂的)
解码:字节( 看不懂的 ) -----------> 字符、字符串(能看懂的)
二、字符编码和字符集
编码与解码的过程需要遵循的规则,其实就是不同的字符编码。我们最早接触的是ASCII码,它主要是用来显示英文和一些符号,到后面还有编码规则中常用的有:gbk,utf-8等。它们分别属于不同的编码集。
encoding是charset encoding的简写,即字符集编码,简称编码。
charset是character set的简写,即字符集。
得出编码是依赖于字符集的,一个字符集可以有多个编码实现。
转换流的原理是:字符流 = 字节流 + 编码表。在转换流中选择正确的编码非常的重要,因为指定了编码,它所对应的字符集自然就指定了,否则很容易出现乱码。
1.InputStreamReader
//InputStreamReader(InputStream in):创建一个默认字符集字符输入流。
//InputStreamReader(InputStream in, String charsetName):创建一个指定字符集的字符流。
InputStreamReader isr1 = new InputStreamReade