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

당신은 바이트를 작성하는 직접의 OutputStream을 사용하려고합니다. 내가

PrintWriter out=new PrintWriter(System.out); 

는 또한 toString() 방법을 사용하여 문자열로 바이트 데이터를 변환하여 사용하는 경우

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

당신은 내 하루를 절약 할 수 있습니다 : 나는 이것이 무엇인지를 알 필요가 없습니다 ... – senzacionale

4

PrintWriter 문제를 encoing 한 렸기 때문에 바이트 []와 strinf 필요가 없습니다. 당신은 아마도 당신의 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

그것은 .. .. 나를 위해 일한 그래서 인코딩 문제