
![]()
已采纳
read方法调用的是字节流(每次调用一个字节),如果是英文,就是两个字节javafilestream.read,就会出现乱码的。
可以通过BufferedReader 流的方式进行流缓存,之后借助readLine方法获得至缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获得至的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环

{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后需要close掉,如前面的就必须是:bre.close(),否则bre流会一直存在,直到程序运行结束。
![]()
gvrtgvtrfgv
所以你打印wenti看看不是乱码,如果是乱码,请表明test3.txt的编码不是UTF-8的编码,用一些文本软件就是查出它的编码。
如果是wenti不是乱码,则证明,你java文件的编码不是UTF-8,你假如进行转码 new String(String.getBItes(),"UTF-8")
![]()

xiudangwang
你的properties文件编译过了吗?凡是有非西方的字符都必须事先编译的,具体步骤如下:
比如你有一个1.properties文件(含有非西欧字符),你可以在cmd窗口中切换至1.properties文件所在目录,然后键入native2ascii -reverse -encoding gb2312 1.properties ActionName_zh_CN.properties
1.properties为转换之前的文件名 ActionName_zh_CN.properties为转换以后的文件名,其中-encoding后面的gb2312是可以变的如 utf-8等
![]()
我亲测没有问题,应该是你的txt文本的编码不是UTF-8导致的。
![]()
8195320angel
这些不是乱码javafilestream.read,这才是:&U>*RQ<K'1eKyxcrH

`=D5=E2=B2=C5=CA=C7~{Ub2EJG~}
![]()
SB= new String(SB.getBytes("ISO-8859-1"),"UTF-8");//字符编码
![]()
多试几种编码,总有一个是对的.
![]()
WINDOW默认是GBK 看你java文件编码是哪个 编码格式不统一
public static void main(String[] args)throwsIOException{
FileInputStream fis = new FileInputStream( "D:\\StoreHouse.txt");

InputStreamReader isr = new InputStreamReader(fis, "GBK");
BufferedReader br=new BufferedReader(isr);
StringBuffer SB=new StringBuffer(4096);
String temp = null;
while((temp=br.readLine())!=null){
SB.append(temp).append('\n');
System.out.println(SB);
}
br.close();
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-141521-1.html
猪乸也会上树
畜生