gpt4 book ai didi

java - 使用 URL.openStream() 下载的 HTML 内容始终包含无效字符

转载 作者:行者123 更新时间:2023-12-01 12:43:41 24 4
gpt4 key购买 nike

我尝试使用 Java 从 YouTube 下载 HTML 代码,但生成的字符串始终包含无效字符。例如“ü”变成“u?”。
我尝试过使用所有常用的编码,甚至编写了一个小测试程序来尝试每种编码和每种编码组合,但无效字符仍然存在。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;

public class EncodingTest {

public static void main(final String[] args) throws MalformedURLException, IOException {
for (final Charset a : Charset.availableCharsets().values()) {
final BufferedReader in = new BufferedReader(new InputStreamReader(new URL("https://www.youtube.com/watch?v=WENkquBHchM").openStream(), a));

String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.contains("og:title")) {

System.out.println(inputLine);

for (final Charset b : Charset.availableCharsets().values()) {
try {
System.out.println(new String(inputLine.getBytes(), b) + "\t[" + a + " -> " + b + "]");
}
catch (final Exception e) {
}
}
}
}
in.close();
}
}
}

如果我在浏览器中打开 URL 或使用 wget 或类似工具下载它,则不会出现错误。我也尝试过从其他一些网站下载 HTML,但它在那里工作正常。
有什么办法可以解决这个问题吗?

最佳答案

这是简单的 UTF-8(正如 Chrome 中的响应 header 所示)。不要来回转换它。如果它不起作用,则问题是您的控制台无法显示 UTF-8 文本。

试试这个:

BufferedReader in = new BufferedReader(new InputStreamReader(new URL("https://...").openStream(), "UTF-8"));

关于java - 使用 URL.openStream() 下载的 HTML 内容始终包含无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com