2011-08-01 30 views
2
byte[] data = (byte[])opBinding.execute(); 
PrintWriter out = new PrintWriter(outputStream);  
out.println(data); 
out.flush(); 
out.close(); 

但是我不是文字而是@ 84654。我如何将字节[]添加到PrintWriter?我需要的byte [],而不是strinf becouse我已经encoing问题čćžšđPrintWriter and byte []问题

+1

做一个理由你知道'byte []'数据的编码是什么?如果是这样,你可以使用'String foo = new String(data,“UTF-8”)'或类似的。 – msandiford

+1

不需要'flush()','colse()'就够了 –

+0

有时候是utf-8,有时候是windows-1250。因此,我将文本存储到blob中。然后我将它读入字节。 – senzacionale

回答

9

您可以直接使用的OutputStream来写字节。

outputStream.write(byte[] b); 
+0

你救了我一天:)用这个我不需要知道什么是编码... – senzacionale

4

PrintWriter是为文本数据,而不是二进制数据

这听起来像你应该很可能被转换您byte[]String,然后编写串出 - 假设PrintWriter你写来使用,它支持您感兴趣的字符的编码

您还需要知道原始文本数据已编码为byte[]的编码,才能成功转换为开头的文本。

2

问题是,在将结果返回到println语句之前,您的代码调用(隐含地)data.toString()

1

试试这个

byte[] data = (byte[])opBinding.execute(); 
PrintWriter out = new PrintWriter(outputStream);  
out.println(new String(data)); 
out.flush(); 
out.close(); 
+0

这是好的,但后来是编码问题。 – senzacionale

0

它为我..当我使用

PrintWriter out=new PrintWriter(System.out); 

而且它使用toString()方法字节的数据字符串转换。所以它可能是您的编码问题