【发布时间】:2012-08-04 23:44:17
【问题描述】:
我需要将 InputStream 的内容转换为字符串。这里的难点在于输入编码,即Latin-1。我尝试了几种方法并使用 String、getBytes、char[] 等对 sn-ps 进行编码,以便直接进行编码,但似乎没有任何效果。
最后,我想出了下面的可行解决方案。但是,这段代码对我来说似乎有点冗长,即使对于 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;
}
【问题讨论】:
标签: java string character-encoding inputstream