【问题标题】:Convert to UTF-8转换为 UTF-8
【发布时间】:2017-03-07 06:43:38
【问题描述】:

我正在使用以下方法从 HTTP 服务器读取 txt 文件。

public static String getHtmlFromUrl(String strUrl, String referer, boolean isMobile) {
    URL url = null;
    BufferedReader reader = null;
    StringBuilder sb = null;
    String returnValue = "";

    try {
        url = new URL(strUrl);
        URLConnection con = url.openConnection();

        // force server to mimic specific Browser
        con.setRequestProperty("User-Agent", userAgent);
        if(isMobile)
            con.setRequestProperty("User-Agent", userAgentMobile);

        con.setRequestProperty("Referer", referer);

        con.setReadTimeout(15000);
        con.connect();

        reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
        sb = new StringBuilder();

        String line = null;
        while((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        returnValue = sb.toString();
    } catch(Exception e) {
        e.printStackTrace();
    } finally {
        if(reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return returnValue;
}

我没有直接访问这个文件的权限(所以我不能改变它的方式)。如果我在浏览器中调用 URL,它会使用 ISO-8859 或 Windows-1252 编码正确显示。

Android 似乎默认将其解释为 utf-8。所以我需要一种方法将returnValue 或StringBuffer sb 从现有的 ISO-8859 编码转换为 utf-8。

我该怎么做?

【问题讨论】:

标签: android character-encoding urlconnection


【解决方案1】:

你必须更新这一行:

reader = new BufferedReader(new InputStreamReader(con.getInputStream()));

需要:

reader = new BufferedReader(new InputStreamReader(url.getInputStream(), "ISO_8859_1"));

或从 Java 7 开始:

reader = new BufferedReader(new InputStreamReader(url.getInputStream(), StandardCharsets.ISO_8859_1));

更新: ISO_8859_1 代替 UTF-8

【讨论】:

  • 这(当然)不起作用,因为文本采用 ISO-8859。但这个提示很棒。如果您更新答案,我会接受。 reader = new BufferedReader(new InputStreamReader(url.getInputStream(), StandardCharsets.ISO_8859_1));
  • 我怎么错过了....对不起那部分。我已经按照你的建议更新了
  • 不太...似乎仍然存在一些复制/粘贴问题:-)
  • 是的,我已经从你这边再次更新了刷新
  • 你需要更新这个问题还是解决了你的问题(提示:-))??
猜你喜欢
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
相关资源
最近更新 更多