当前位置: 代码迷 >> J2SE >> Byte[]怎么转化为中文的String
  详细解决方案

Byte[]怎么转化为中文的String

热度:41   发布时间:2016-04-24 17:41:16.0
Byte[]如何转化为中文的String
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就业培训教程> 里有这方面的知识你可以找找看
  相关解决方案