FileWriter,FileReader,都是默认使用GBK编码表(安装了中文的系统的都是默认GBK)。要对编码表进行操做,解决网页的乱码问题就须要流转换java
字符流通向字节流的桥梁
,这个流自己能够操做编码表函数
|--Writer |--OutputStreamWriter |--FileWriter 自身是一个字符输出流,用来写文本文件
public OutputStreamWriter(OutputStream out) public OutputStreamWriter(OutputStream out, String CharsetName)
转换过程编码
//建立流对象绑定文件对象 FileOutpurStream fos = new FileOutputStream("xxxxx"); //建立转换流,经过构造函数转换流,指定编码格式 OutputStreamWriter osw = new OutputStreamWriter(fos,"GBK"); //经过转换流对象来写入文件 osw.write("xxxx"); //只用关闭转换流就可关闭输出流了 osw.close();
字节流通向字符流的桥梁
,这个流自己能够操做编码表code
|--Reader |--InputStreamReader |--FileReader 自身是一个字符输入流,用来读文本文件
public InputStreamReader(InputStream in) public InputStreamReader(InputStream in, String CharsetName)
转换过程对象
FileInputStream fis = new FileInputStream(); InputStreamReader isr = new InputStreamReader(fis,"gbk"); char[] ch = new char[1024]; int len = 0; while((len = isr.read()) != -1){ System.out.println(new String(ch, 0, len)); } isr.close()