java - 将 InputStream 读取为 UTF-8

标签 java 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 的任何想法?谢谢!

最佳答案

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

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

关于java - 将 InputStream 读取为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964640/

相关文章:

powershell - 无需BOM将源转换为UTF-8

java - 用于进度报告的 InputStream 或 Reader 包装器

java - 是否需要分别关闭每个嵌套的 OutputStream 和 Writer?

Java从二进制到八进制的转换

java - 在Java中,有没有办法在通知线程后获取线程的实际等待时间

java - 仅从字符串中提取数字

RMarkdown : UTF-8 works with Knit button but not with render()

encoding - "Raw"从双UTF-8到UTF-8(或从UTF-8到ANSI)的转换

java - Java中从大文件中读取字节导致Java堆空间错误

java - 文件写入后无法删除