转换流和字符编码

转换流

      虽然字节流与字符流表示两种不同的数据流操作,但是这两种流彼此间是可以实现互相转换的,而要想实现这样的转换就可以通过InputStreamReader、OutputStreamWriter两个类实现。首先来观察一下这两个类的继承结构以及构造方法:

名    称

InputStreamReader

OutputStreamWriter

定义结构

public class InputStreamReader extends Reader

public class OutputStreamWriter extends Writer

构造方法

public InputStreamReader(InputStream in)

public OutputStreamWriter(OutputStream out)


实现输出流转换

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class TestDemo {
	public static void main(String[] args) throws Exception { // 此处直接抛出
		File file = new File("d:" + File.separator + "demo" + File.separator
				+ "mldn.txt");	// 1、定义要输出文件的路径
		if (!file.getParentFile().exists()) {	// 判断父路径是否存在
			file.getParentFile().mkdirs() ;// 创建父路径
		}
		OutputStream output = new FileOutputStream(file) ;	// 字节流
		// 将OutputStream类对象传递给OutputStreamWriter类的构造方法,而后向上转型为Writer
		Writer out = new OutputStreamWriter(output) ;
		out.write("ww");	// Writer类的方法
		out.flush();
		out.close();
	}
}

字符编码

    Ø  计算机中所有的信息组成都是二进制数据,那么所有能够描述出的中文文字都是经过处理后的结果。在计算机的世界里,所有的语言文字都会使用编码来进行描述,例如:最常见的编码是ASC II码。在实际的工作里面最为常见的几种编码如下:

    Ø  GBK、GB2312:中文的国标编码,其中GBK包含有简体中文与繁体中文两种,而GB2312只包含简体;

    Ø  ISO8859-1:是国际编码,可以描述任何的文字信息(中文需要转码);

    Ø  UNICODE:是十六进制编码,但是在传递字符信息是会造成传输的数据较大;

    Ø  UTF编码(Unicode Transformation Format):是一种UNICODE的可变长度编码,常见的编码为UTF-8编码;

取得当前系统中的环境属性中的文件编码

public classTestDemo {

       publicstatic void main(String[] args) throws Exception {

              System.getProperties().list(System.out);//列出全部系统属性

       }

}


程序出现乱码


import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class TestDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("D:" + File.separator + "mldn.txt");
		OutputStream output = new FileOutputStream(file);
		// 强制改变文字的编码,此操作可以通过String类的getBytes()方法实现
		output.write("ww".getBytes("ISO8859-1"));
		output.close();
	}
}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值