InputStream のコンテンツを文字列に変換する必要があります。ここでの問題は、入力エンコーディング、つまり Latin-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;
}