【问题标题】:Can't read js file from url in correct encoding无法以正确的编码从 url 读取 js 文件
【发布时间】:2018-02-06 12:44:03
【问题描述】:

我想从 url https://d3c3cq33003psk.cloudfront.net/opentag-67008-473432.js 读取 js 文件作为字符串

我尝试了几种方法(从 url 读取或下载然后读取),但我一直收到不可读的字符,例如 �(��_�s��d������:`�� ��.������....
我尝试过的方法:
1.从url下载文件:

FileUtils.copyURLToFile(jsUrl, file);

2。从网址读取:

    StringBuilder sb = new StringBuilder();
    try {
        URL url = new URL(jsUrl);
        // read text returned by server
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
        String line;
        while ((line = in.readLine()) != null) {
            sb.append(line).append("\n");
        }
        in.close();
    } catch (Exception e) {
    }
    return sb.toString();

如果我从 url 手动下载文件(页面-> 另存为...) - 它可以使用 Notepad++ 以正常的 UTF-8 编码打开。
有人可以帮我处理这个奇怪的文件吗?

【问题讨论】:

标签: java url utf-8 fileutils


【解决方案1】:

它是 GZIPped。使用GZIPInputStream

更新

        InputStream stream = url.openStream();
        if ("gzip".equalsIgnoreCase(cnt.getHeaderField("Content-Encoding"))) {
            stream = new GZIPInputStream(stream);
        }
        BufferedReader in = new BufferedReader(new InputStreamReader(stream, "UTF-8"));

更新 2

使用 URL 连接:

        URLConnection cnt = url.openConnection();
        InputStream stream = cnt.getInputStream();
        if ("gzip".equalsIgnoreCase(cnt.getHeaderField("Content-Encoding"))) {
            stream = new GZIPInputStream(stream);
        }
        BufferedReader read = new BufferedReader(new InputStreamReader(stream, "UTF-8"));

【讨论】:

猜你喜欢
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
相关资源
最近更新 更多