字符乱码问题?
byte[] bytes=new byte[1024];
byte[] b;
while((c=inPut.read(bytes))!=-1){
b = bytes.toString().getBytes("8859_1");
String nstr = new String(b,"GB2312");
System.out.println(nstr);
fos.write(bytes,0,c);
}
System.out.println(bytes); 为什么显示出来都是[B@e54?
问题点数:20、回复次数:18Top
1 楼zhutouzip(醒了的鸟)回复于 2005-03-27 13:55:38 得分 10
8859_1这是什么,应该是ISO-8859-1Top
2 楼operfume(橘子香水)回复于 2005-03-27 13:57:19 得分 0
改成ISO-8859-1后,显示[B@ea5?Top
3 楼zhutouzip(醒了的鸟)回复于 2005-03-27 14:06:52 得分 0
你是否想把这个byte数组保存的字节转化成汉字?
如果这样,按如下试试;
String str1=new String(bytes);
String nstr=new String(str1.getBytes("ISO-8859-1"),"GB2312");Top
4 楼operfume(橘子香水)回复于 2005-03-27 14:54:34 得分 0
这次内容显示出来了,但是汉字显示的全部是?????Top
5 楼zhutouzip(醒了的鸟)回复于 2005-03-27 15:00:53 得分 0
晕!
汉字的编码有一个范围的,如果超出了这个编码范围就会出现问题!Top
6 楼operfume(橘子香水)回复于 2005-03-27 17:09:46 得分 0
但是我把内容写入一个文件后,使用写字板显示是乱码,而使用记事本显示是正确的。Top
7 楼HMILYFLY(程序人生)回复于 2005-03-27 18:16:26 得分 3
String str=new String(bytes);
String str1=new String(str.getBytes("ISO-8859-1","GB2312"));Top
8 楼tx18(www.sqlserver.com.cn)回复于 2005-03-27 18:39:42 得分 3
试试:
String str=new String(bytes);
String str1=new String(str.getBytes("ISO-8859-1"));Top
9 楼operfume(橘子香水)回复于 2005-03-27 18:50:08 得分 0
汉字始终是??????
程序代码如下:
ServletInputStream inPut = request.getInputStream();
String realpath = application.getRealPath("/bin/report/");
java.io.File file_out=new java.io.File(realpath+"reportstencil.xml");
FileOutputStream fos=new FileOutputStream(file_out);
int c = 0;
byte[] bytes=new byte[1024];
while((c=inPut.read(bytes))!=-1){
String nstr = new String(bytes);
String nstr2 = new String(nstr.getBytes("iso-8859-1"),"gb2312");
System.out.println(nstr2);
fos.write(bytes,0,c);
}
fos.close();
inPut.close();
调用方法:
var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
oXmlHttp.Open("POST","../util/saveXmlToServer.jsp",false);
oXmlHttp.setRequestHeader("Content-Type","text/xml");
oXmlHttp.setRequestHeader("charset","utf-8");
var xmlDoc = "<xml id=\"mData\">\n"+
xmlData+"</xml>"
oXmlHttp.Send(xmlDoc);
if(oXmlHttp.status==200){
var rText = oXmlHttp.responseText;
if(rText.substring(0,1)=="0"){
return 0;
}else{
return 1;
}
}else{
return 2;
}
Top
10 楼jack315(velasco)回复于 2005-03-27 19:03:04 得分 2
请问你在jsp页面charset="gb2312"有了吗,没的话你再怎么.getbyts("iso-8859-1"),"gb2312");也没用。Top
11 楼gaochao79(www.informe.cn)回复于 2005-03-27 19:05:31 得分 1
这方面的东东太多了 search吧Top
12 楼operfume(橘子香水)回复于 2005-03-27 19:08:15 得分 0
页面已经有了
<%@page contentType="text/html;charset=gb2312"%>Top
13 楼zhutouzip(醒了的鸟)回复于 2005-03-27 19:33:34 得分 0
如果这样不行的话,先调用:
System.setProperty("file.encoding","GB2312");
再执行字符串的转换!Top
14 楼operfume(橘子香水)回复于 2005-03-27 20:11:31 得分 0
System.setProperty("file.encoding","GB2312");
加了还是不得行,好怪?Top
15 楼Microsoftwyl(wyl)回复于 2005-03-27 21:53:17 得分 1
插入数据库时乱码的解决方法:
public String getStr(String str)
{
try
{
String temp_p=str;
byte[] temp_t=temp_p.getBytes("ISO8859-1");
String temp=new String(temp_t);
return temp;
}
catch(Exception e)
{
}
return "null";
}Top
16 楼PcVSBirds(pc_birds)回复于 2005-03-27 21:58:03 得分 0
web方式编码用ISO8859_1就够了
但是我的application就不行了晕Top
17 楼gaochao79(www.informe.cn)回复于 2005-03-28 09:25:08 得分 0
抗议sun,给鬼子做日语版本,不管我们中国大爷私活!Top
18 楼gaochao79(www.informe.cn)回复于 2005-03-28 09:25:45 得分 0
是死活不是私活!靠,太生气了,打错了Top





