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

テキストの代わりに@ 84654が得られます。 PrintWriterにbyte []を追加するにはどうすればよいですか?私は私がテキストのデータ、ないバイナリデータを意味するčćžšđPrintWriterとbyte []の問題

+1

ドゥの原因になるかもしれませんあなたの 'byte [] 'エンコーディングが何であるか知っていますか?もしそうなら 'String foo = new String(data、" UTF-8 ")'などを使うことができます。 – msandiford

+1

'flush()'、 'colse()'の必要性は十分ではありません –

+0

時にはutf-8、時々windows-1250です。これのために私はblobにテキストを格納します。それから私はバイトにそれを読んだ。 – senzacionale

答えて

9

を試してみてください。私は

PrintWriter out=new PrintWriter(System.out); 

はまた、それがtoString()メソッドを使用して文字列にバイトのデータを変換し、使用するとき

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

あなたは私の一日を保存します:)これで何がエンコードされているか知る必要はありません... – senzacionale

4

PrintWriterの問題をencoingいるbecouseバイトは[]とstrinf必要はありません。あなたがに書いているPrintWriterを仮定すると、あなたが興味を持っている文字をサポートするエンコーディングを使用しています

- 。あなたは恐らく Stringにご byte[]を変換し、その文字列を書き出すべきであるようですね

また、最初にテキストに変換するには、元のテキストデータがbyte[]にエンコードされていることを確認する必要があります。

2

問題は、結果がprintlnステートメントに返される前にコードが(暗黙的に)data.toString()を呼び出していることです。

1

は、あなたがバイトを書くために直接OutputStreamを使用することができ、この

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

これは問題ありませんが、エンコードの問題です。 – senzacionale

0

それは..私のために働いていたので、それはあなたのエンコーディングの問題