Java里面使用InputStreamreaderd读取出来的中文是乱码怎么回事?

packageorg.maofx;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileR... package org.maofx;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

public class InputStreamReaderDemo {

public static void main(String[] args) {
File f = new File(
"D:/test.txt");
FileInputStream filein = null;
Reader reader = null;
try {
filein = new FileInputStream(f);
reader = new InputStreamReader(filein);
int code = 0;
while((code = reader.read())!= -1){
System.out.print((char)code);
}

} catch (Exception e) {

e.printStackTrace();
}finally{
try {
reader.close();
} catch (IOException e) {

e.printStackTrace();
}

}
}

}
其中test.txt里面是中文文字,但是读出来在控制台上面还是乱码,求高手指教!!!
展开
 我来答
sheng164252593
推荐于2017-11-25
知道答主
回答量:15
采纳率:0%
帮助的人:4.8万
展开全部
LZ看看你的这个java类在eclipse中的编码格式是不是默认的GBK编码,如果是utf-8就会乱码,InputStreamReader是java自带的字节流到字符流的通道。你可以看看这方面的资料
375782092
2012-05-18
知道答主
回答量:28
采纳率:0%
帮助的人:8万
展开全部
你读入的字节流强转为字符输出,不是乱码才怪。。。
追问
读入的是字符流好不,reader = new InputStreamReader(filein),父类是字节流,但new出来的是字符流
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫薇参星
科技发烧友

2012-05-18 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3621万
展开全部
把reader = new InputStreamReader(filein);改成reader = new InputStreamReader(filein,"gb2312");或者reader = new InputStreamReader(filein,"GBK");就行了。
追问
我把那个test.txt文件保存的编码格式改成“utf-8”又可以了,不过用你这种方法好像还是乱码!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6de1f74
2012-05-18 · 超过23用户采纳过TA的回答
知道答主
回答量:157
采纳率:0%
帮助的人:60万
展开全部
上面的方法是对的,补充
while((code = reader.read())!= null){
System.out.print((char)code);
}
如果你是为了读取文件内容的话,可以使用
while((reader.readline() != -1){
System.out.print(reader.readline());
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式