A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何洪森 黑马帝   /  2012-2-23 22:21  /  1795 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

首先我先用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编码读取出来的却不是:大家好 为什么呢。我的输出是:芥径褍顔嶆總锟
出现了乱码?使用同样的编码写和读却不一样,怎么回事?

3 个回复

正序浏览
可以查看你的记事本的编码方式来理解,再好好想想
回复 使用道具 举报
tanlei200620 发表于 2012-2-23 22:50
目测第四行代码:                BufferedReader bufr = new BufferedReader(new InputStreamReader(Syste ...

也不对呀,如果替换 写入记事本中的内容就是:��Һ�
键盘输入的时候应该不需要指定编码呀,应该是在读取的时候才会对照编码表进行查找。
回复 使用道具 举报
目测第四行代码:                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)) ;

你的电脑的编码默认为GBK,所以用    BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in,"UTF-8")) ;   替换
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马