如何识别文件里的中文??

Roy T 2011-05-07 09:46:26
a.txt:
大家好,我是刘德华


public class Main {

public static void main(String[] args) throws IOException {
BufferedReader fin = null;
try {
fin = new BufferedReader(new FileReader("a.txt"));
String temp;
while((temp = fin.readLine()) != null)
println(temp);
} finally {
if(fin != null)
fin.close();
}
}
}


显示的是:
������ҵ���޹�˾
。。。。
...全文
90 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
danliandejintou 2011-05-08
  • 打赏
  • 举报
回复
补充6楼,我在eclipse里设置了所有编码默认为utf8,所以读utf8文件没乱码。是不是?
danliandejintou 2011-05-08
  • 打赏
  • 举报
回复
这个,我之前也是莫名其妙,有时乱码,有时没乱码。
后来看了别人的帖,发现是文件编码的问题。
比如你新建记事本文件,写几个汉字,然后另存为,编码有ansi,utf8,unicode,unicode big endian什么的。看他们的意思,好像是文件编码的问题。比如我的文本文件用utf8,那就没乱码,如果用别的,好像有乱码。
========================
PS:这个,不太懂,详情请看5楼吧
gameboard_cn 2011-05-08
  • 打赏
  • 举报
回复
如果你的 a.txt 内容是系统平台上打开后写,大概用系统默认编码,但lz的是英文版,字符集应该不是GBK之流的,要自行指定.
new BufferedReader (InputStreamReader(file,Charset.forName("GBK")));//"GBK GB2312等..." ok!

给你一份我的代码分段,是处理来自web的字符串(这里的token 含中文乱码),因为传输过程它会用ISO-8859-1编码,所以我要指 定ISO-8859-1获取byte 为因我的是中文系统,所以可以不用显式指定中文编码,也不会乱码
  if (token==null) return true;
byte[] bytes=token.getBytes(Charset.forName("ISO-8859-1"));
ByteBuffer bf=ByteBuffer.wrap(bytes);
CharBuffer cb=Charset.defaultCharset().decode(bf);
String s=new String(bytes);
System.out.println(s); //ok
System.out.println(cb.toString());//ok
jingxiaobo1987 2011-05-08
  • 打赏
  • 举报
回复
对的哈,你要注意这个问题。乱码问题很值得研究,要知道ANIS不能够表示中文。最好是保存为UTF-8.不是的话也要转码为utf-8
铁匠梁老师 2011-05-08
  • 打赏
  • 举报
回复
乱码是字符集问题不同隐起
wcwtitxu 2011-05-07
  • 打赏
  • 举报
回复

BufferedReader reader = null;
File file = new File("a.txt");
try {
// 视文本文件实际保存编码不同,指定相应的编码格式, 比如:GBK,UTF-8...
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GBK"));
StringBuilder builder = new StringBuilder();
char[] chars = new char[4096];
int length = 0;
while (0 < (length = reader.read(chars))) {
builder.append(chars, 0, length);
}
return builder.toString();
} finally {
try {
if (reader != null) reader.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}




参考:http://www.iscripts.org/bbs/viewthread.php?tid=33
Roy T 2011-05-07
  • 打赏
  • 举报
回复
。。。帮帮我
Roy T 2011-05-07
  • 打赏
  • 举报
回复
Windows7
Roy T 2011-05-07
  • 打赏
  • 举报
回复
我的println就是system.out.println
貌似我的人品有问题???
我是英文版WIN都s7
wklken 2011-05-07
  • 打赏
  • 举报
回复
貌似我的没错

while((temp = fin.readLine()) != null)
println(temp);

这个println貌似是自己实现的吧,我用
while((temp = fin.readLine()) != null)
System.out.println(temp);

控制台打印出来的是正常的......这个

把你println函数贴出来看看

62,614

社区成员

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

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