黑马程序员技术交流社区

标题: 怎么我读取出来的文件是乱码呢? [打印本页]

作者: 小周务商    时间: 2014-5-6 14:32
标题: 怎么我读取出来的文件是乱码呢?

public class InputStreamDemo1 {
        public static void main(String[] args) throws IOException {
               
                FileInputStream fileInputStream =new FileInputStream(new File("E:\\a.txt"));
               
                byte[] buf =new byte[1024];
                int length =0;
                while((length=fileInputStream.read(buf))!=-1){
                       
                        System.out.println(new String(buf,0,length));
                }
                fileInputStream.close();
        }
}


作者: heima_xyu    时间: 2014-5-6 14:47
看下你的文本文件是否以UTF-8编码形式保存的。
package test;
import java.io.*;
public class InputStreamDemo1 {
        public static void main(String[] args) throws IOException {
               
                FileInputStream fileInputStream =new FileInputStream(new File("E:\\b.txt"));
               
                byte[] buf =new byte[1024];
                int length =0;
                while((length=fileInputStream.read(buf))!=-1){
                        
                        System.out.println(new String(buf,0,length));
                }
                fileInputStream.close();
        }
}
套用了你的代码,并自己新建了a.txt文本并没有出问题,执行结果:
风格反对感规范化个
规范化个分
法国号
法国号
法国号
好几个环节
大塞弗

然后我将a.txt另存为b.txt,代码a.txt换成b.txt,将编码形式改为UTF-8,执行结果
娉曞浗鍙?
娉曞浗鍙?
濂藉嚑涓幆鑺?
澶у寮?


所以你可以检查一下a.txt编码形式是否和你系统默认编码格式一样

作者: 小周务商    时间: 2014-5-6 17:32
heima_xyu 发表于 2014-5-6 14:47
看下你的文本文件是否以UTF-8编码形式保存的。
package test;
import java.io.*;

谢谢。可是在哪里看呢。怎么检查?
作者: heima_xyu    时间: 2014-5-6 17:46
小周务商 发表于 2014-5-6 17:32
谢谢。可是在哪里看呢。怎么检查?

你可以打开a.txt,在另存为,弹出的对话框,看下编码默认是什么,因为会默认为你打开的a.txt的编码表。
或者参考毕老师的字符编码,学到的转换方法来打印。
作者: 小周务商    时间: 2014-5-6 19:43
heima_xyu 发表于 2014-5-6 17:46
你可以打开a.txt,在另存为,弹出的对话框,看下编码默认是什么,因为会默认为你打开的a.txt的编码表。
...

嗯。可以了。谢谢。指定了一个码表就可以读取正常了。




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