I/O输入输出-解码乱码问题
有时候文件会出现一些乱码问题
/**
* 转换流:字节流转字符流,处理乱码(编码集,解码集)
* 1编码与解码的概念
* 编码: 字符----编码字符集->二进制
* 解码:二进制---解码字符集->字符
* 2乱码
* 1)编码与解码的字符集不 统一
* 2)字节缺少,长度丢失、
**/
以下在在编码与解码字符出现的统一的情况下出现乱码
public static void test() throws UnsupportedEncodingException { //解码 byte--->char String str = "中国";//gbk //编码 char --->byte byte[] data = str.getBytes();//将str转换成字节数组 //编码与解码字符集统一 //通过使用指定的 charset 解码指定的 byte数组,构造一个新的 String。新 String 的长度是字符集的函数,因此可能不等于 byte 数组的长度。 System.out.println(new String(data)); System.out.println("*************"); //设定编码字符集 data = str.getBytes("utf-8"); //不统一出现乱码 System.out.println(new String(data)); System.out.println("*************"); //编码 byte[] data2 = "中国".getBytes("utf-8"); //解码 str = new String(data2,"utf-8"); System.out.println(str); }
解码文件:
public static void test1() throws IOException { //指定解码字符集 BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream( new File("e:/test/zjf.txt"))) ); String info = null; while(null!=(info = br.readLine()))//读取每一行 { System.out.println(info); } }