【问题标题】:Java: Reading from a URL produces gibberishJava:从 URL 读取会产生乱码
【发布时间】:2014-07-31 19:31:35
【问题描述】:

所以我一直在尝试从 kickass.to 读取 html 代码(它在其他网站上运行良好),但我得到的只是一些奇怪的胡言乱语。 我的代码:

BufferedReader in = new BufferedReader(
                 new InputStreamReader(new URL("http://kickass.to/").openStream()));
            String s = "";
            while ((s=in.readLine())!=null) System.out.println(s);
            in.close();

例如: 有谁知道它为什么这样做? 谢谢!

【问题讨论】:

  • 乱码是什么意思?我运行了你的代码,我刚刚得到了页面的 html。
  • 我添加了一张图片来说明。
  • 也许可以尝试添加一个字符集参数,例如BufferedReader in = new BufferedReader(new InputStreamReader(new URL("http://somesite.com/").openStream(), "UTF-8"));
  • 应该是UTF-8吗?也许该站点正在使用其他字符集。想象一下,如果网站以 EBCDIC 格式返回页面(并返回适当的 Content-Type:text/html;charset=EBCDIC 标头),您可能会造成怎样的破坏。
  • @DavidConrad 你是对的。我的错。我使用的字符集只是一个例子。检查 Content-Type 的标头和字符集是查看返回内容的方法

标签: java html url encoding


【解决方案1】:

这里的问题可能是服务器配置不正确,因为它返回的响应是 gzip 压缩的,即使客户端没有发送 Accept-Encoding: gzip 标头。

所以您看到的是页面的压缩版本。要解压,请通过GZIPInputStream:

BufferedReader in = new BufferedReader(
    new InputStreamReader(
         new GZIPInputStream(new URL("http://kickass.to/").openStream())));

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 2012-11-10
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多