转换流的使用

1.转换流涉及到的类:属于字符流
InputStreamReader:将一个字节的输入流转换为字符的输入流
解码:字节、字节数组 --->字符数组、字符串

OutputStreamWriter:将一个字符的输出流转换为字节的输出流
编码:字符数组、字符串 ---> 字节、字节数组

说明:编码决定了解码的方式

2.作用:提供字节流与字符流之间的转换

3.图示:

4.典型实现:

@Test
public void test1() throws IOException { FileInputStream fis = new FileInputStream("dbcp.txt");
// InputStreamReader isr = new InputStreamReader(fis);//使用系统默认的字符集
//参数2指明了字符集,具体使用哪个字符集,取决于文件dbcp.txt保存时使用的字符集
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");//使用系统默认的字符集 char[] cbuf = new char[20];
int len;
while((len = isr.read(cbuf)) != -1){
String str = new String(cbuf,0,len);
System.out.print(str);
} isr.close(); } /*
此时处理异常的话,仍然应该使用try-catch-finally 综合使用InputStreamReader和OutputStreamWriter
*/
@Test
public void test2() throws Exception {
//1.造文件、造流
File file1 = new File("dbcp.txt");
File file2 = new File("dbcp_gbk.txt"); FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2); InputStreamReader isr = new InputStreamReader(fis,"utf-8");
OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk"); //2.读写过程
char[] cbuf = new char[20];
int len;
while((len = isr.read(cbuf)) != -1){
osw.write(cbuf,0,len);
} //3.关闭资源
isr.close();
osw.close(); }

5.说明:
//文件编码的方式(比如:GBK),决定了解析时使用的字符集(也只能是GBK)。

编码集

1.常见的编码表

ASCII:美国标准信息交换码。
用一个字节的7位可以表示。
ISO8859-1:拉丁码表。欧洲码表
用一个字节的8位表示。
GB2312:中国的中文编码表。最多两个字节编码所有字符
GBK:中国的中文编码表升级,融合了更多的中文文字符号。最多两个字节编码
Unicode:国际标准码,融合了目前人类使用的所字符。为每个字符分配唯一的字符码。所有的文字都用两个字节来表示。
UTF-8:变长的编码方式,可用1-4个字节来表示一个字符。

2.对后面学习的启示

客户端/浏览器端 <----> 后台(java,GO,Python,Node.js,php) <----> 数据库

要求前前后后使用的字符集都要统一:UTF-8.

最新文章

  1. hibernate一对一主键单向关联
  2. 文本处理三剑客之sed命令
  3. iOS优秀博客收录
  4. List subList(startIndex, endIndex);
  5. 【bzoj3624】【apio2008】免费道路
  6. 深入理解js——函数和对象的关系
  7. 2014 Super Training #4 B Problem Arrangement --状压DP
  8. CSS学习笔记(float和盒子模型)
  9. linux-CentOS6.4下安装oracle11g详解
  10. Java实战之02Hibernate-03Session中的常用方法
  11. string与StringBuilder之性能比较
  12. (转)iOS7界面设计规范(13) - UI基础 - 与iOS的系统整合
  13. hyper-V 装ubuntu15.04
  14. iOS 原生的 UIButton 点击事件是不允许带多参数的,唯一的一个参数就是默认UIButton本身 那么我们该怎么实现传递多个参数的点击事件呢?
  15. 《CSS世界》读书笔记(八)
  16. nginx反向代理导致请求header头信息丢失
  17. python摸爬滚打之day010----函数进阶
  18. Django基础之MTV模型
  19. 【转载】Win10打开U盘提示“文件或目录损坏无法读取”怎么办?
  20. 黄聪:windowss7显示桌面图标设置在任务栏的解决办法

热门文章

  1. 十几万条数据的表中,基于帝国cms 。自己亲身体验三种批量更新数据的方法,每一种的速度是什么样的
  2. 使用阿里云K8S 服务,丢失访问中原始IP 问题
  3. Android学习笔记触摸事件
  4. 手写简易版Promise
  5. 关于时间格式 GMT,UTC,CST,ISO
  6. 【Flutter实战】定位装饰权重组件及柱状图案例
  7. spring boot actuator监控需要注意的点
  8. JavaWeb网上图书商城完整项目--day02-19.修改密码功能流程分析
  9. 手把手教你使用Python抓取QQ音乐数据(第二弹)
  10. Python 中的元类到底是什么?这篇恐怕是最清楚的了