java~编码转换流 InputStreamReader OutputStreamWriter

1)指定了编码,对应的字符集就指定了;

2)ASCII: 
	老美发明的-->英语、字符、回车、退格等;
	生活中的文字和计算机中文字对应关系;

  IOS-8859-1:
  	欧洲的,拉丁等-->单字节编码,兼容ASCII

  GBXXX:
  	GB2312: 简体中文  7000多-->单字节
  	GBK: 21003个-->双字节编码(默认)
  	GB18030: 70244个汉字-->1  2  4个字节组成,支持少数民族的.

  Unicode:
  	万国码
  	包含世界所有国家的文字,最多使用4个字节的数字来表达每个字母、符号或者文字.
  		UTF-8(最常用,互联网协议都支持),支持1-4个字节为每个字符编码:
  			1.128个US-ASCII字符,只需要一个字节编码
  			2.拉丁文等字符,需要2个字节编码
  			3.大部分常用字(含中文),使用3个字节编码
  			4.其它极少Unicode辅助字符,使用4字节编码(如:藏文)
  	    UTF-16
  		UTF-32
   
3)编码表的本质:生活中的文字和计算机中二进制的对应规则.

4)IDE默认 utf-8
  
  windows系统默认是GBK编码(ANSI)

5)转换流的出现:
	FileReader读取GBK出现乱码的原因:
		FileReader做的事情是: 
			读取字节-->查询UTF-8编码表-->转换为我们能看懂的字符;
			因此如果不是UTF-8编码,FileReader则出错,解码不了;


6)InputStreamReader extends Reader:
	InputStreamReader: 是 `字节流通向字符流的桥梁`,它使用指定的charset读取字符并将其解码为字符,
		它使用的字符集可以由名称指定或显示指定,或者可以接收平台默认的字符集.

7)GBK:   你好   -55-44     -33-34-->共4个字节, 2个字节存储一个中文
  UTF-8: 你好   -11-12-23  -19-56-78-->共6个字节, 3个字节存储一个中文

8)InputStreamReader强大之处: 可以查询指定的码表

9)OutputStreamWriter:
	编码作用: 把能看懂的字符-->变为看不懂的字节

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章