黑马程序员技术交流社区

标题: 转换流InputStreamReader和OutputStreamWriter的问题 [打印本页]

作者: 够了没有    时间: 2013-11-22 15:35
标题: 转换流InputStreamReader和OutputStreamWriter的问题
本帖最后由 够了没有 于 2013-11-22 15:36 编辑

import java.io.*;

class IO流  {
        public static void main(String[] args) throws IOException {
                BufferedReader bufr =
                                new BufferedReader(new InputStreamReader(new FileInputStream("Demo.txt"),"gbk"));
                BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out,"utf-8"));
                String buf = null;
                while((buf=bufr.readLine())!=null){
                        bufw.write(buf);
                        bufw.newLine();
                        bufw.flush();
                }
                bufr.close();
                bufw.close();
        }
}
----------------------------------------------------------------------
输入流用的是utf-8编码表,输出流用的是gbk编码表,因为输入流和输出流用的是不同的编码表,
不是应该会出现乱码吗?但是运行得到的结果正常,还是原来的文本文件。

作者: 一直很安静    时间: 2013-11-22 16:02
你的文件内容是什么?是不是都是字母?
作者: che201311    时间: 2013-11-22 16:31

本帖最后由 够了没有 于 2013-11-22 15:36 编辑


import java.io.*;

class IO流  {
        public static void main(String[] args) throws IOException {
                BufferedReader bufr =
                                new BufferedReader(new InputStreamReader(new FileInputStream("Demo.txt"),utf-8"));
                BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out,"gbk""));
                String buf = null;
                while((buf=bufr.readLine())!=null){
                        bufw.write(buf);
                        bufw.newLine();
                        bufw.flush();
                }
                bufr.close();
                bufw.close();
        }
}
你换换位置再试试就乱码了 具体原因就是两种编码的范围不同
作者: 够了没有    时间: 2013-11-23 17:10
一直很安静 发表于 2013-11-22 16:02
你的文件内容是什么?是不是都是字母?

文件内容是这个:
abcde1

abc\r\nde2
abcde3
abcde4
2
作者: 够了没有    时间: 2013-11-23 17:14
che201311 发表于 2013-11-22 16:31
本帖最后由 够了没有 于 2013-11-22 15:36 编辑

换什么的位置?文件的吗?
作者: 一直很安静    时间: 2013-11-23 17:33
够了没有 发表于 2013-11-23 17:10
文件内容是这个:
abcde1

都是字母的话 她们的在两个编码表的编码是一样 你把文件内容改成汉字试试
作者: 够了没有    时间: 2013-11-23 17:42
一直很安静 发表于 2013-11-23 17:33
都是字母的话 她们的在两个编码表的编码是一样 你把文件内容改成汉字试试 ...

换几个汉字上去就出现乱码了,多谢了
作者: 一直很安静    时间: 2013-11-23 17:49
够了没有 发表于 2013-11-23 17:42
换几个汉字上去就出现乱码了,多谢了

不客气 帮到你就好了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2