黑马程序员技术交流社区

标题: IO字符流编码问题 [打印本页]

作者: breeze    时间: 2013-4-23 22:15
标题: IO字符流编码问题
本帖最后由 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();
                        }
                }
        }
}
作者: wangyougu010    时间: 2013-4-23 22:28
看一下你的工作空间的默认编码是不是  GBK   如果不是,改成默认就行了,这个代码没啥问题的
作者: breeze    时间: 2013-4-23 22:49
本帖最后由 breeze 于 2013-4-23 23:21 编辑
wangyougu010 发表于 2013-4-23 22:28
看一下你的工作空间的默认编码是不是  GBK   如果不是,改成默认就行了,这个代码没啥问题的 ...

编译器默认的是GBK, 不知道是哪里出问题了, 不过如果将代码中utf-8改成GBK就可以正常显示了
作者: Miss小强    时间: 2013-4-24 14:07
breeze 发表于 2013-4-23 22:49
编译器默认的是GBK, 不知道是哪里出问题了, 不过如果将代码中utf-8改成GBK就可以正常显示了 ...

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

搞定了, 原来我的默认编码是GBK, 当我用GBK编码输入数据输入流是以UTF-8的形式输入数据的, 到程序中时就已经是乱码了, 所以出来也是乱码的
作者: 曹睿翔    时间: 2013-4-24 22:34
楼主可以整理下本帖的相关知识不?先收集知识,也是好的学习习惯,等我发活动贴的时候来支持!
好的话我会加分




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