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);
        }
    }

 

posted on 2016-10-30 14:25  我想静静_zjf  阅读(142)  评论(0编辑  收藏  举报

导航