2012-01-29 7 views
2

私はJavaの経験はありません。私はProcessingを実験しようとしています。Java.ioエンコーディングとは異なる出力エンコーディングを処理していますか?

http postコマンドを使用して512バイトの配列をWebサーバーに送信する処理のスクリプトを作成しようとしています。これはすべてうまくいきます(インターネットで掘り下げたコードのおかげで!)が、エンコーディングに問題があります。私は0xFFでいっぱいの文字配列を作成しています。これは出力ウィンドウに512 'ÿ'文字で表示されます。問題はHTTPScoopが一連の0xD8文字または 'Ø'文字としてポストヘクスを示すことです。私はコンソールが1文字を印刷していて、出力ストリームが別の文字を送信しているように見えるのは不明です。以下

コード:

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でエンコードを設定します。例えば。 OutputStreamWriter(OutputStream,encoding)コンストラクタを使用します。

+0

素晴らしい!それはISOエンコードのようです!ご協力いただきありがとうございます!新しいコードは次のとおりです。OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()、 "ISO8859_1"); – tsugua

関連する問題