以 UTF-8 格式读取 InputStream

新手上路,请多包涵

我正在尝试通过 Internet 逐行读取 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 有什么想法吗?谢谢!

原文由 Chris Kuehl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

解决了我自己的问题。这一行:

 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));

原文由 Chris Kuehl 发布,翻译遵循 CC BY-SA 3.0 许可协议

String file = "";

try {

    InputStream is = new FileInputStream(filename);
    String UTF8 = "utf8";
    int BUFFER_SIZE = 8192;

    BufferedReader br = new BufferedReader(new InputStreamReader(is,
            UTF8), BUFFER_SIZE);
    String str;
    while ((str = br.readLine()) != null) {
        file += str;
    }
} catch (Exception e) {

}

尝试这个,.. :-)

原文由 Rohith 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题