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

来源:5-3 字符流的过滤器

拿馒头盖房子

2016-02-15 10:25

代码如下

    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里面中文是乱码。

写回答 关注

4回答

  • 壹个外向孤独患者
    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的,因为默认创建的文件,以项目的编码格式是一样的!

    拿馒头盖房子

    好的 非常感谢!

    2016-02-23 09:04:59

    共 1 条回复 >

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

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

    nashi 回复拿馒头盖房子

    你的项目编码默认是gbk编码,改下项目属性就可

    2016-02-15 20:07:28

    共 2 条回复 >

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题