Преобразование содержимого InputStream из латиницы -1 в UTF -8 String

Мне нужно преобразовать содержимое InputStream в строку. Сложность здесь заключается во входной кодировке, а именно в латинице -1. Я попробовал несколько подходов и фрагментов кода со String, getBytes, char[] и т. д., чтобы получить прямую кодировку, но ничего не сработало.

Наконец, я придумал рабочее решение ниже. Однако мне этот код кажется немного многословным даже для Java. Итак, вопрос здесь:

Есть ли более простой и элегантный подход для достижения того, что здесь делается?

private String convertStreamToStringLatin1(java.io.InputStream is)
        throws IOException {

    String text = "";

    // setup readers with Latin-1 (ISO 8859-1) encoding
    BufferedReader i = new BufferedReader(new InputStreamReader(is, "8859_1"));

    int numBytes;
    CharBuffer buf = CharBuffer.allocate(512);
    while ((numBytes = i.read(buf)) != -1) {
        text += String.copyValueOf(buf.array(), 0, numBytes);
        buf.clear();
    }

    return text;
}
7
задан cyroxx 7 August 2012 в 22:06
поделиться