黑马程序员技术交流社区

标题: 字符流转换字节流问题,帮忙解答 [打印本页]

作者: 黄敏    时间: 2012-8-19 15:24
标题: 字符流转换字节流问题,帮忙解答
import java.io.*;
class Test02 {
        /*
        练习,将一个文本数据打印在控制台上。要按照以上格式自己完成三个明确。
        分析:源,文本文件。InputStream,Reader
        是不是纯文本,是,Reader
        设备,硬盘一个文件 FileReader fr = new FileReader("C:\\demo.java")
        需不需要提高效率,需要,BufferedReader br = new BufferReader(fr)


        目标,控制台,OutputStream Writer
        是不是纯文本,是 Writer
        设备 控制台 System.out
        但是源是字符流  需要进行字符流转成字节流,设置指定编码utf-8
        OutputStreamWriter osw = new OutputStreamWriter(System.out,"utf-8")
        需要提高效率 BufferedWriter bw= new BufferedWriter(osw)


        */
        public static void main(String args[]) throws IOException {
                BufferedReader br = new BufferedReader(new FileReader("C:\\Test.txt"));
                BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(System.out,"utf-8"));
                String line= null;
                while((line=br.readLine()) != null){
                        bw.write(line);
                        bw.newLine();
                        bw.flush();
                }
                br.close();
                       
        }
}

上面结果在控制台输出的中文是乱码。我想输出的是中文,但是必须用utf-8输出中文,帮忙改一下,我现在懵了,想不通

作者: 黄敏    时间: 2012-8-19 16:31
怎么没人帮忙啊
作者: 黑马王建伟    时间: 2012-8-19 16:57
我换了GBK,就可以了,不过utf-8就乱
作者: 苑占丽    时间: 2012-8-19 17:13
因为你的Demo.java是硬盘上的文件,它的默认编码是gbk,
而你取的时候,又设置成了utf-8,
当你不设置的时候,它是按默认编码gbk取出的,就不会出现乱码
而,当你设置成了utf-8,而源文件你又没有在创建的时候,指定编码utf-8,乱码是一定的。

建议你创建一个源文件,并设置其编码为utf-8,这样,输出到控制台的时候,设置成utf-8取出,就不会有乱码了
作者: 黄敏    时间: 2012-8-19 17:15
苑占丽 发表于 2012-8-19 17:13
因为你的Demo.java是硬盘上的文件,它的默认编码是gbk,
而你取的时候,又设置成了utf-8,
当你不设置的时候 ...

谢了,我修改一下
作者: 陈红建    时间: 2012-8-19 17:17
控制台字符编码的固定的啊
一般都就是 美国编码OEM  和 中美兼容的OEM/GBK

作者: 苑占丽    时间: 2012-8-19 17:23
黄敏 发表于 2012-8-19 17:15
谢了,我修改一下

补充一点,如果把源文件设置成utf-8编码,把他写入另一个编码为utf-8文本文件中时,不会有乱码,但是经过控制台输出时,依然会是乱码,所以,如果要在控制台输出,编码不能设置为UTF-8,
作者: 黄敏    时间: 2012-8-19 17:44
苑占丽 发表于 2012-8-19 17:23
补充一点,如果把源文件设置成utf-8编码,把他写入另一个编码为utf-8文本文件中时,不会有乱码,但是经过 ...

知道了





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