为了账号安全,请及时绑定邮箱和手机立即绑定

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

正在回答

4 回答

....发错东西。。。

0 回复 有任何疑惑可以回复我~
class test
{
    System.out.print();

}


0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~
#1

拿馒头盖房子 提问者

好的 非常感谢!
2016-02-23 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~
#1

拿馒头盖房子 提问者

我的inputStreamReader打开文件是用的utf-8打开的,writer也是用utf-8写入的,为什么还是乱码呢?
2016-02-15 回复 有任何疑惑可以回复我~
#2

nashi 回复 拿馒头盖房子 提问者

你的项目编码默认是gbk编码,改下项目属性就可
2016-02-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信