我需要将InputStream的内容转换为字符串。难点在于输入编码,即Latin-1。我尝试了几种方法和代码片段,使用String、getBytes、char[]等来处理编码问题,但是似乎都没有起作用。
最终,我想出了下面可行的解决方案。不过,即使对于Java来说,这个代码看起来仍然有些冗长。所以问题是:
是否有更简单、更优雅的方法来实现这里所做的工作?
最终,我想出了下面可行的解决方案。不过,即使对于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;
}