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里面是中文文字,但是读出来在控制台上面还是乱码,求高手指教!!! 展开
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里面是中文文字,但是读出来在控制台上面还是乱码,求高手指教!!! 展开
4个回答
展开全部
你读入的字节流强转为字符输出,不是乱码才怪。。。
追问
读入的是字符流好不,reader = new InputStreamReader(filein),父类是字节流,但new出来的是字符流
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把reader = new InputStreamReader(filein);改成reader = new InputStreamReader(filein,"gb2312");或者reader = new InputStreamReader(filein,"GBK");就行了。
追问
我把那个test.txt文件保存的编码格式改成“utf-8”又可以了,不过用你这种方法好像还是乱码!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面的方法是对的,补充
while((code = reader.read())!= null){
System.out.print((char)code);
}
如果你是为了读取文件内容的话,可以使用
while((reader.readline() != -1){
System.out.print(reader.readline());
}
while((code = reader.read())!= null){
System.out.print((char)code);
}
如果你是为了读取文件内容的话,可以使用
while((reader.readline() != -1){
System.out.print(reader.readline());
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询