问答详情
源自:5-3 字符流的过滤器

为什么writer规定了utf-8但是写出来还是乱码呢?

代码如下

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(
                new FileInputStream("demo/nihao.dat"),"utf-8"));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream("demo/nihao2.dat"),"utf-8"));

        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
            bw.write(line);
            bw.newLine();
            bw.flush();
        }
        br.close();
        bw.close();
    }

这样在终端打出来的是对的,但是写出来的文件nihao2.dat里面中文是乱码。

提问者:拿馒头盖房子 2016-02-15 10:25

个回答

  • 壹个外向孤独患者
    2018-08-20 11:12:02

    ....发错东西。。。

  • 壹个外向孤独患者
    2018-08-20 11:11:24

    class test
    {
        System.out.print();
    
    }


  • tbb616065450
    2016-02-21 23:07:24

    你先看下你的文件是不是以UTF-8的格式保存的,如果不是,改变一下,如果改变了之后,下一次运行之后,还出现同样的问题,那么就看你项目是否是utf-8的,因为默认创建的文件,以项目的编码格式是一样的!

  • nashi
    2016-02-15 11:17:59

    终端是在JVM虚拟机的运行时环境运行的,可以自动识别,但是写到文件里的内容,编码是根据及机器规定的编码机制来读取文件的,打开文件要使用特定的编码机制打开方式,否则乱码。