Java字符流与字节流转换

1. 编码表 -- 由字符及其对应的数组组成的一张表

         常见的编码表

                   ASCII码表                --     0127           7byte --> char

                   ISO-8859-1码表     --     拉丁码表         1Byte=8byte --> char

                   gb2312码表             --

                   GBK码表                   -- 简体中文码表  2Byte --> char

                   GB18030码表

                   BIG5码表                  --      台湾(繁体中文)

                   unicode编码            --

                            UTF-8                 --      按照数据的区域来决定存储的字节数  3Byte --> char

                           

                   于是 UTF-8的两个汉字对应 GBK码表的三个汉字

 

2. 字符串的编码

public class test2_char {
	public static void main(String[] args){
		//字符串的编码和解码
		try {
			String s = "你好";
			byte[] bys = s.getBytes("UTF-8");
			System.out.println(Arrays.toString(bys));
			
			String result = new String(bys, "UTF-8");
			System.out.println(result);
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

3. 转换流

转换流的特点:

1. 其是字符流和字节流之间的桥梁

2. 可对读取到的字节数据经过指定编码转换成字符

3. 可对读取到的字符数据经过指定编码转换成字节

 

什么时候使用转换流呢?

1,源或者目的对应的设备是字节流,但是操作的却是文本数据,可以使用转换作为桥梁。提高对文本操作的便捷。

2,一旦操作文本涉及到具体的指定编码表时,必须使用转换流 

 

具体的对象体现:

1. InputStreamReader:字节到字符的桥梁

2. OutputStreamWriter:字符到字节的桥梁

这两个流对象是字符体系中的成员,它们有转换作用,本身又是字符流,所以在构造的时候需要传入字节流对象进来。

public class IOEncodeDemo {
	public static void main(String[] args) throws IOException {
		//采用指定的编码读取txt文件
		InputStreamReader isr = new InputStreamReader(new FileInputStream(
				"osw.txt"), "UTF-8");
		char[] chs = new char[1024];
		int len = 0;
		while((len=isr.read(chs))!=-1){
		System.out.println(String.valueOf(chs, 0, len));
		}	
		isr.close();
	}
}


 

public class test2_char {
	public static void main(String[] args){

		try {
		//采用指定的编码写txt文件
			OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("c://c.txt"), "GBK");
			osw.write("Java很好啊");
			osw.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}



 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值