最近用笔记本写JAVA读TXT文件(utf-8编码,按行读),发现一个以前没有出现或没有注意的问题每一个文件的第一行前n个字符(中文,没统计多少个,估计有十几个)读出来是乱码,但是后面的都正常
如果在第一行前面加个空行(把以前的第一行变第二行),就不会出现乱码的问题
读文件代码如下
File f= new File(source);
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis,"utf-8");
BufferedReader br = new BufferedReader(isr);这是什么原因?
如果在第一行前面加个空行(把以前的第一行变第二行),就不会出现乱码的问题
读文件代码如下
File f= new File(source);
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis,"utf-8");
BufferedReader br = new BufferedReader(isr);这是什么原因?
很奇怪。。
两台电脑用的JDK和Eclipse都不一样,操作系统也不一样,应该和软件没关系吧
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;public class Demo{
public static void main(String[] args)
{
Demo d = new Demo();
try
{
d.readAsCode("d:\\bb.txt");
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void saveAsUTF16(String fileName, String content) throws IOException{
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "Unicode"));
writer.write(content);
writer.close();
}
public void readAsCode(String fileName) throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"utf-8"));
String rslt;
while((rslt = reader.readLine())!=null)
{
System.out.println(rslt);
}
}
}
用什么编码存的就用什么编码去读
一个文件中会出现不同的编码吗?这个我还真不知道
另:文件是utf-8,读也是用utf-8
试一下。