2012-01-29 2 views
2

자바에 대한 경험이 없으며 Processing으로 실험하기 시작했습니다.처리 출력 인코딩이 Java.io 인코딩과 다릅니 까?

http 게시 명령을 사용하여 웹 서버에 512 바이트 배열을 보내는 처리 스크립트를 작성하려고합니다. 이것은 모두 잘 작동합니다 (코드를 통해 인터넷에서 파헤 치다!)하지만 인코딩에 문제가 있습니다. 0xFF로 채워진 문자 배열을 만들었습니다. 출력 창에 512 'ÿ'문자로 인쇄됩니다. 문제는 HTTPScoop이 게시물의 16 진수를 일련의 0xD8 문자 또는 'Ø'문자로 표시하는 것입니다. 콘솔이 한 문자를 출력하고 출력 스트림이 다른 문자를 보내는 것처럼 보이는 이유는 확실하지 않습니다. 아래

코드는 :

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.URL; 
import java.net.URLConnection; 
import java.net.URLEncoder; 

public static void main(String[] args) { 
    try { 
    // Construct data 
    char[] anArray = new char[512]; 
    char charFillValue = 0xFF; 
    Arrays.fill(anArray, charFillValue); 

    String str = new String(anArray); 
    println(str); 

    String data = str; 
    println(data); 

    // Send data 
    URL url = new URL("http://10.10.155.120:8081/set.cgi?dst=p1"); 
    URLConnection conn = url.openConnection(); 
    conn.setDoOutput(true); 
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 

    // Get the response 
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    String line; 
    while ((line = rd.readLine()) != null) { 
     System.out.println(line); 
    } 
    wr.close(); 
    rd.close(); 
} catch (Exception e) { 
} 
} 

은 어떤 도움이 많이 주시면 감사하겠습니다!

+0

'catch (Exception e) {}'깨진 코드에서 예외를 무시하지 마십시오! 그것은'catch (Exception e) {e.printStackTrace();}'이어야합니다. (즉각적인 문제는 아니지만 어쨌든 해결하십시오.) –

+0

Andrew에게 감사드립니다. 예외는 더 이상 무시되지 않습니다! (위의 스 니펫에는 예외가 없습니다.) – tsugua

답변

1

기본 문제는 Java의 기본 인코딩과 서버의 인코딩이 일치하지 않는 것 같습니다. OutputStreamWriter에 인코딩을 설정하십시오. E.G. OutputStreamWriter(OutputStream,encoding) 생성자를 사용합니다.

+0

환상적! ISO 인코딩 인 것 같습니다! 당신의 도움을 주셔서 감사합니다! 새로운 코드 : OutputStreamWriter wr = new OutputStreamWriter (conn.getOutputStream(), "ISO8859_1"); – tsugua

관련 문제