我试图通过互联网逐行读取text/plain
文件。我现在所拥有的代码是:将InputStream读取为UTF-8
URL url = new URL("http://kuehldesign.net/test.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
LinkedList<String> lines = new LinkedList();
String readLine;
while ((readLine = in.readLine()) != null) {
lines.add(readLine);
}
for (String line : lines) {
out.println("> " + line);
}
文件,test.txt
,包含¡Hélló!
,我使用,以测试其编码。
当我查看OutputStream
(out
)时,我将其视为> ¬°H√©ll√≥!
。我不认为这是OutputStream
的问题,因为我可以做out.println("é");
没有问题。
读取形式为InputStream
为UTF-8的任何想法?谢谢!
HTTP协议指定编码。你为什么不使用库API来处理它?你不应该像这样猜测编码。我不是故意否定的:你做得很好!我只是想知道是否没有更简单的方法。 – tchrist 2011-02-11 01:25:51
不幸的是,我将无法访问服务于“text/plain”文件的服务器,并且它不使用UTF-8编码。我没有意识到任何好的网络库;有什么建议么? – 2011-02-11 01:39:19
看着[文档](http://download.oracle.com/javase/6/docs/api/java/net/URL.html),我不认为你将不得不指定编码。我很惊讶他们给你一个字节流!您可以访问底层的[URLConnection](http://download.oracle.com/javase/6/docs/api/java/net/URLConnection.html),您可以从中检查Content-Encoding,然后打开带有正确参数的InputStreamReader。对源代码的快速检查并没有发现任何似乎对你有用的事情,这看起来很蹩脚且容易出错,所以我可能错过了一些东西。 – tchrist 2011-02-11 01:48:29