转换流InputStreamReader类和OutputStreamWriter类

1.字符编码和字符集

字符编码:一套自然语言的字符与二进制之间的对应规则。
字符集:也叫编码表。生活中文字和计算机中二进制的对应规则。
常见字符集: 一套字符集必然至少有一套字符编码
(1)ASCII字符集(ASCII编码):7位(bits)表示一个字符,共128字符。扩展的字符集使用8位(bits)。
(2)GBK字符集(GBK编码):最常用的中文码表,双字节编码方案。
(3)Unicode字符集(UTF-8编码、UTF-16编码、UTF-32编码):表达任意语言的任意字符,标准万国码。
UTF-8编码:国际标准码表,电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码;所有互联网协议都必须支持UTF-8编码。编码规则(使用1至4个字节为每个字符编码):① 128个US-ASCII字符,只需一个字节编码。② 拉丁文等字符,需要二个字节编码。 ③ 大部分常用字(含中文),使用三个字节编码。 ④ 其他极少使用的Unicode辅助字符,使用四个字节编码。

2.编码引出的问题

在IDEA中使用FileReader可以读取默认编码格式(UTF-8)的文件;
FileReader读取系统默认编码(中文GBK)会产生乱码。

3.InputStreamReader类

public class FileReader extends InputStreamReader extends reader

构造方法:

InputStreamReader(InputStream in) 
//创建一个inputstreamreader使用默认字符集(utf-8)。 
InputStreamReader(InputStream in, String charsetName) 
//创建一个inputstreamreader使用指定的字符集,charsetName为编码表名称。

注意事项: 构造方法中指定的编码表名称要和文件的编码相同,否则会发生乱码。

字节流通向字符流的桥梁:使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

读取原理(解码):
在这里插入图片描述

4.OutputStreamWriter类

public class FileWriter extends OutputStreamWriter extends writer

构造方法:

OutputStreamWriter(OutputStream out) 
//创建一个outputstreamwriter使用默认的字符编码(utf-8)。 
OutputStreamWriter(OutputStream out, String charsetName) 
//创建一个outputstreamwriter使用指定的字符集。 charsetName为编码表名称,不区分大小写。

注意事项:
write()方法:把字符转换为字节,存储到缓冲区中;
flush()方法:把内存缓冲区中的字节刷新到文件中;

字符流通向字节流的桥梁:使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则接受平台默认的字符集。
写入原理(编码):
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值