黑马程序员——【学习笔记】IO流——字符编码相关

-------android培训java培训、期待与您交流!----------


IO流操作的数据,除了内存内的数据之外,其它设备操作的都是字节流,

字符流的出现为了方便操作字符。

字节流和字符流的桥梁,就是转换流:InputStreamReader和OutputStreamWriter

而数据从字节转换成字符,需要用到字符编码。

转换流能作为桥梁,就是因为它加入了编码转换。(把编码作为参数传入转换流对象)


1 常见的编码表:

ASCII:美国码表,用1个字节的7位表示

ISO8859-1:欧洲码表,用1个字节的8位

GB2312:中国的中文编码表。

GBK:中国的中文编码表升级,融合了更多的中文文字字符。目前中文平台最常用。一个中文字符2个字节

Unicode:国际标准码表,融合了多种文字。Java的默认码表。

UTF-8:最多三个字节来表示一个中文字符。


2 应用:

常用byte[] b=String对象.getBytes("GBK")来获得对应的编码。

把编码字节数组和所需编码作为String(byte[] b, "GBK")的参数传入,可以解码,获得字符。中文平台默认是用GBK解码。


对于中文字符,如果用不支持中文的码表来编码,就算编错,编出来的字节都是不对的,无法解码。

如果编码编错了,解不出来。就算用的码表是正确的,也只会编出乱码。

如果编码编对了,解错了,有可能有救。

如果编码便对了,解错了,也有可能没救。


class Day24{
	public static void main(String[] args) throws IOException{
		writeText();
		readText();
	}
	public static void writeText() throws IOException{
		OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("E:\\Demotest\\gbk2.txt"),"UTF-8");//默认GBK
		
		osw.write("你好a");
		
		osw.close();
		
		
	}
	public static void readText() throws IOException{
		
		BufferedReader isw = new BufferedReader(new InputStreamReader(new FileInputStream("E:\\Demotest\\gbk2.txt")));<span style="font-family: Arial, Helvetica, sans-serif;">//默认GBK</span>

		
		String line =null;
		while((line=isw.readLine())!=null)
			System.out.println(line);
				
	}
}
浣犲ソa




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值