黑马程序员技术交流社区

标题: io流中编码问题 [打印本页]

作者: 何洪森    时间: 2012-2-23 22:21
标题: io流中编码问题
首先我先用utf-8编码,创建一个文件,键盘输入:大家好
import java.io.* ;
class WriterDemo {
        public static void main(String args[]) throws Exception{
                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)) ;
                FileOutputStream fos = new FileOutputStream("abc.txt") ;
                OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8") ;
                BufferedWriter bufw = new BufferedWriter(osw) ;
                String line = null ;
                while((line=bufr.readLine())!=null){
                        if(line.equals("over"))
                                break;
                        bufw.write(line) ;
                        bufw.newLine() ;
                }
                bufr.close() ;
                bufw.close() ;
        }
}
然后在写一个读取文件的代码:
import java.io.* ;
class ReaderDemo {
        public static void main(String args[]) throws Exception{
                FileReader fr = new FileReader("abc.txt") ;
                BufferedReader bufr = new BufferedReader(fr) ;
                BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out,"utf-8")) ;
                String line = null ;
                while((line=bufr.readLine())!=null){
                        bufw.write(line) ;
                }
                bufr.close() ;
                bufw.close() ;
        }
}
同样是使用utf-8编码读取出来的却不是:大家好 为什么呢。我的输出是:芥径褍顔嶆總锟
出现了乱码?使用同样的编码写和读却不一样,怎么回事?
作者: tanlei200620    时间: 2012-2-23 22:50
目测第四行代码:                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)) ;

你的电脑的编码默认为GBK,所以用    BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in,"UTF-8")) ;   替换
作者: 何洪森    时间: 2012-2-23 23:18
tanlei200620 发表于 2012-2-23 22:50
目测第四行代码:                BufferedReader bufr = new BufferedReader(new InputStreamReader(Syste ...

也不对呀,如果替换 写入记事本中的内容就是:��Һ�
键盘输入的时候应该不需要指定编码呀,应该是在读取的时候才会对照编码表进行查找。
作者: tanlei200620    时间: 2012-2-23 23:27
可以查看你的记事本的编码方式来理解,再好好想想




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