【发布时间】:2011-06-25 06:41:12
【问题描述】:
我正在尝试通过互联网逐行读取text/plain 文件。我现在的代码是:
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?您永远不必像这样猜测编码。我并不是要消极:你做得很好!我只是想知道是否没有更简单的方法。
-
很遗憾,我无法访问为
text/plain文件提供服务的服务器,而且它没有使用UTF-8 编码。我不知道有什么好的网络库。有什么建议吗? -
查看docs,我认为您根本不需要指定编码。我很惊讶他们给了你一个字节流!您确实可以访问底层URLConnection,您可以从中检查 Content-Encoding,然后使用正确的参数打开 InputStreamReader。快速检查源代码并没有发现任何似乎对你有用的东西,这看起来很糟糕而且容易出错,所以我可能错过了一些东西。
标签: java utf-8 inputstream