将InputStream读取为UTF-8

我正在尝试text/plain逐行从Internet 上读取文件。我现在拥有的代码是:


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的阅读形式有什么想法吗?谢谢!


皈依舞
浏览 5267回答 3
3回答

暮色呼如

解决了我自己的问题。这行:BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));需要是:BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));或从Java 7开始:BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));

呼唤远方

String file = "";try {&nbsp; &nbsp; InputStream is = new FileInputStream(filename);&nbsp; &nbsp; String UTF8 = "utf8";&nbsp; &nbsp; int BUFFER_SIZE = 8192;&nbsp; &nbsp; BufferedReader br = new BufferedReader(new InputStreamReader(is,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; UTF8), BUFFER_SIZE);&nbsp; &nbsp; String str;&nbsp; &nbsp; while ((str = br.readLine()) != null) {&nbsp; &nbsp; &nbsp; &nbsp; file += str;&nbsp; &nbsp; }} catch (Exception e) {}尝试这个,.. :-)

肥皂起泡泡

每当发现一个特殊字符将其标记为^时,我都会遇到相同的问题。为了解决这个问题,我尝试使用以下编码:ISO-8859-1BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1"));while ((line = br.readLine()) != null) {}我希望这可以对任何看到此帖子的人有所帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java