06IO转换流 解决IO流乱码问题

关于IO流乱码,为什么会乱码?

我们用IO流存取数据时,是一个编码与解码的过程的,我们用的开发工具基本上都是以utf-8的规则进行编码和解码的,而我们用的操作系统大多数都是windows(中文系统),而它的的编码和解码方式都是以GBK为准的,当我们用输入流将文件中的数据读取到内存时,文件是以GBK的规则进行编码的,当开发工具使用utf-8的规则去解码,显然是行不通的,所以会出现乱码。

转换流解决IO乱码

转换流可以指定解码和编码的方式 具体如下⬇⬇⬇⬇⬇⬇

字符输入转换流

构造函数

//1.默认解码格式构造方法
        //参数FileInputStream对象   默认编码格式(utf-8)
        InputStreamReader isr0 = new InputStreamReader(new FileInputStream("E:\\上传的文件\\a.txt"));
        //2.指定解码格式构造方法
        //参数1.FileInputStream对象  参数2.指定解码格式
        InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\上传的文件\\a.txt"),"gbk");

实例

将"E:\上传的文件\a.txt"中的数据以GBK的解码方式输出到控制台

 InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\上传的文件\\a.txt"),"gbk");
        char[] strs = new char[1024];
        int len =0;
        while ((len=isr.read(strs))!=-1){
                System.out.print(new String(strs,0,len));
        }
        isr.close();

字符输出转换流

构造函数


		//1.默认编码构造方法
        //参数FileOutputStream对象   默认编码格式(utf-8)
        OutputStreamWriter osw01 = new OutputStreamWriter(new FileOutputStream("E:\\上传的文件\\a0.txt"));
        //2.指定编码构造方法
        //参数1.FileOutputStream对象  参数2.想要编码的格式
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("E:\\上传的文件\\a0.txt"),"gbk");


实例

将“你好啊”以GBK编码的方式写入“E:\上传的文件\a0.txt”文件

  OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("E:\\上传的文件\\a0.txt"),"gbk");
        osw.write("你好啊");
        osw.close();
发布了45 篇原创文章 · 获赞 47 · 访问量 1721

猜你喜欢

转载自blog.csdn.net/qq_44784185/article/details/102991297
今日推荐