обработка выходной кодировки отличается от кодировки Java.io? - PullRequest
2 голосов
/ 29 января 2012

У меня нет опыта работы с Java, и я только начинаю экспериментировать с обработкой.

Я пытаюсь написать сценарий при обработке, который будет отправлять 512-байтовый массив с помощью команды http post на веб-сервер.Это все работает хорошо (благодаря коду, который я выкопал в интернете!), Но у меня возникли некоторые проблемы с кодировками.Я создаю массив символов, заполненный 0xFF.Это выдает как 512 символов «ÿ» в окне вывода, как и должно быть.Проблема в том, что HTTPScoop показывает шестнадцатеричный столб в виде серии символов 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) {
} 
}

Любая помощь будет высоко ценится!

1 Ответ

1 голос
/ 29 января 2012

Основная проблема заключается в том, что кодировка Java по умолчанию и кодировка сервера не совпадают.Установите кодировку в OutputStreamWriter.Например, используя конструктор OutputStreamWriter(OutputStream,encoding).

...