import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.nio.CharBuffer;
import com.sun.org.apache.bcel.internal.generic.NEW;
public class TestCharset {
/**
* @param args
* @throws Exception
* 原理: 输入输出的都要进行转码。
*/
public static void main(String[] args) throws Exception {
//向C:/ss.txt文件里面写东西 默认操作系统的编码CBK
// PrintStream ps=new PrintStream("C:/ss.txt");
// 输出流输出东西必须要求输出必须制定一种编码。 没有的话,就是操作系统的编码CBK
// PrintStream ps=new PrintStream("C:/ss.txt","utf-8");
// System.setOut(ps);
// System.out.println("潘鹤");
// ps.close();
// 写到文件里面去 也要制定一种编码 "utf-8"
// FileOutputStream fos= new FileOutputStream("C:/ss.txt");
// fos.write("中国".getBytes("utf-8"));
//
// 用底层的流去写数据,写到文件里面 要制定编码 "utf-8"
FileOutputStream fos1= new FileOutputStream("C:/ss.txt");
OutputStreamWriter os= new OutputStreamWriter(fos1,"utf-8");
os.write("中国");
os.close();
// 从文件里面读取 控制台:乱码
// 原理:我们从文件里面读取的写的时候是UTF-8的码,而读取出来的时候是 操作系统的码
// FileReader fr=new FileReader("C:/ss.txt");
// char[] cbuf=new char[1024];
// int len=fr.read(cbuf);
// System.out.println(new String(cbuf,0,len));
//从文件里面读取 控制台: 中国
// 我们在输出的时候也要制定是以哪种编码方式进行输出 "utf-8" ,所以不好乱码
FileInputStream fis= new FileInputStream("C:/ss.txt");
InputStreamReader is=new InputStreamReader(fis,"utf-8");
char[] cbuf1=new char[1024];
int len1=is.read(cbuf1);
System.out.println(new String(cbuf1,0,len1));
}
}