String str = new String(data);
其中,data为从InputStream读出来的Byte[],InputStream是一个文本文件,为什么最后 str中凡是中文全是乱码,只有英文能正常显示出来?
------解决方案--------------------
你的data是什么编码的?
试试
String str = new String(data, "gb2312 ");
String str = new String(data, "utf-8 ");
String str = new String(data, "utf-16 ");
等等。
------解决方案--------------------
同意楼上,不过最好用 "gbk ",如果是gb系列的话。
------解决方案--------------------
你读的时候,是按字节读取的,输出也是按字节输出
因为英文只占一个字节,所以没有问题
中文占两个字节,所以会产生乱码
你按照字符读取就没问题了
如下
package io;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class TestSystemOut {
public static void main(String[] args){
try {
FileReader f = new FileReader(new File( "D:\\1.txt "));
BufferedReader br = new BufferedReader(f);
String line = null;
while((line = br.readLine()) != null){
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
------解决方案--------------------
什么编码的?我也很想知道,就是正常Windows记事本那种编码
/////////////////////////////////////////////////////////////////////
String str = new String(data, "gb2312 ");
那你就这样试试
------解决方案--------------------
我们的平台默认应该是Unicode编码啊.中文也可以显示啊.是不是LENGTH出了问题.记得张孝祥 <JAVA就业培训教程> 里有这方面的知识你可以找找看