JAVA 读文件的一个问题

CTea321 2010-04-09 11:02:58
最近用笔记本写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);

这是什么原因?
...全文
111 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaShooter 2010-04-09
  • 打赏
  • 举报
回复
BufferedReader in = new BufferedReader(new FileReader(path));
试一下。
romeo5431 2010-04-09
  • 打赏
  • 举报
回复
。。。我是说你文件存的是什么编码就用什么编码去读。没说一个文件理会出现多个编码。我上面的代码读文件的时候我都试过了。存什么编码就去用什么编码读。没问题的。
CTea321 2010-04-09
  • 打赏
  • 举报
回复
这个,我说了就第一行前十几个字符出现乱码,后面所有的都正常
一个文件中会出现不同的编码吗?这个我还真不知道
另:文件是utf-8,读也是用utf-8
romeo5431 2010-04-09
  • 打赏
  • 举报
回复
这个是因为你存的txt的编码格式问题把。

import java.io.BufferedReader;
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);
}
}
}


用什么编码存的就用什么编码去读
CTea321 2010-04-09
  • 打赏
  • 举报
回复
在自己的笔记本上读开头有十几个乱码,但是在公司电脑上读开头是“?”
很奇怪。。
两台电脑用的JDK和Eclipse都不一样,操作系统也不一样,应该和软件没关系吧
若鱼1919 2010-04-09
  • 打赏
  • 举报
回复
如果读出来开头是一个"?"是正常的,这是windows下面的BOM头,但是多于1个乱码,应该不会吧
若鱼1919 2010-04-09
  • 打赏
  • 举报
回复
如果读出来开头是一个"?"是正常的,这是windows下面的BOM头,但是多于1个乱码,应该不会吧
fyjava1984 2010-04-09
  • 打赏
  • 举报
回复
一般文件没有经过字符编码处理,读文件就不要带字符编码。
我就从来没有遇到过
liboofsc 2010-04-09
  • 打赏
  • 举报
回复
可能是文本文件本身不是utf-8类型的,你却按utf-8来读,所以有这个问题?
黑呼乎 2010-04-09
  • 打赏
  • 举报
回复
写的时候用的什么编码,读的时候也必须用它去读。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧