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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© breeze 中级黑马   /  2013-4-23 22:15  /  1519 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 breeze 于 2013-4-24 19:56 编辑

这段代码指定了输入流和输出流的编码都是utf-8, 为什么到文件里却是乱码
程序是控制台循环接收一行字符数据, 当数据是quit时结束程序
import java.io.*;
public class Test {

        public static void main(String[] args) throws IOException {
                try (InputStream is = System.in;
                                InputStreamReader isr = new InputStreamReader(is, "UTF-8");
                                BufferedReader br = new BufferedReader(isr);
                                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("utff.txt"), "UTF-8"));
                ) {
                        System.out.println("输入字符");
                        String s;
                        while (!"quit".equals(s = br.readLine())) {
                                bw.write(s);
                                bw.newLine();
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1

查看全部评分

6 个回复

倒序浏览
看一下你的工作空间的默认编码是不是  GBK   如果不是,改成默认就行了,这个代码没啥问题的

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 breeze 于 2013-4-23 23:21 编辑
wangyougu010 发表于 2013-4-23 22:28
看一下你的工作空间的默认编码是不是  GBK   如果不是,改成默认就行了,这个代码没啥问题的 ...

编译器默认的是GBK, 不知道是哪里出问题了, 不过如果将代码中utf-8改成GBK就可以正常显示了
回复 使用道具 举报
breeze 发表于 2013-4-23 22:49
编译器默认的是GBK, 不知道是哪里出问题了, 不过如果将代码中utf-8改成GBK就可以正常显示了 ...

将你的文件(xx.java)用记事本打开;然后另存为,选择utf-8;保存;覆盖刚才的。。。
搞定。

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1

查看全部评分

回复 使用道具 举报
可以重新编码,自定义一个字节数组,用UTF-8得到数组原来正确的字节码,然后定义一个字符串数组,用GBK的方式输出,就不会乱码了
回复 使用道具 举报
Miss小强 发表于 2013-4-24 14:07
将你的文件(xx.java)用记事本打开;然后另存为,选择utf-8;保存;覆盖刚才的。。。
搞定。 ...

搞定了, 原来我的默认编码是GBK, 当我用GBK编码输入数据输入流是以UTF-8的形式输入数据的, 到程序中时就已经是乱码了, 所以出来也是乱码的
回复 使用道具 举报
楼主可以整理下本帖的相关知识不?先收集知识,也是好的学习习惯,等我发活动贴的时候来支持!
好的话我会加分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马