黑马程序员技术交流社区

标题: 字节输入流读文件时, 方法1 中遇到中文字符为什么会变成?. [打印本页]

作者: 黑马YJM    时间: 2016-7-29 14:57
标题: 字节输入流读文件时, 方法1 中遇到中文字符为什么会变成?.
本帖最后由 黑马YJM 于 2016-7-29 14:57 编辑

//class.txt   文件中有一句话:   hello Java  我爱java
FileInputStream input = new FileInputStream("class.txt");               //读数据  方法1      结果:  hello Java  ??°?java
                int in = -1;
                while((in = input.read())!= -1){
                        System.out.print((char)in);
                }

        //读数据  方法2      结果:hello Java  我爱java
                byte[] b = new byte[1024];
                int bb = -1;
                while((bb=input.read(b))!=-1){
                        System.out.println(bb);
                        System.out.println(new String(b,0,bb));
                }



作者: GCT    时间: 2016-7-29 16:21
gbk编码是两个字节表示一个中文,utf是三个字节表示一个中文,你read只能读取一个字节,也就是中文的一半,程序不知道这是什么,用?表示了。
作者: 黑马YJM    时间: 2016-7-29 21:05
GCT 发表于 2016-7-29 16:21
gbk编码是两个字节表示一个中文,utf是三个字节表示一个中文,你read只能读取一个字节,也就是中文的一半, ...



谢谢  我明白了.




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