android - 转换为 UTF-8

标签 android character-encoding urlconnection

我正在使用以下方法从 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。所以我需要一种方法将 returnValueStringBuffer sb 从现有的 ISO-8859 编码转换为 utf-8。

我该怎么做?

最佳答案

你必须更新这一行:

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

关于android - 转换为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42641863/

相关文章:

android - 将 ViewGroup 添加到 ViewGroup

Excel VBA 非英文字符支持读取文件

mysql - 为什么 MySQL 对待 é 和 e 一样?

c++ - 有没有办法,或者需要写一个通用的模板化字 rune 字

java - 如何从 URL 下载 .jar 文件

java - 无法创建底部导航 View - 尝试膨胀时变空

android - 在 Activity 之间传递 ArrayList

java - 如何使用java.net.URLConnection触发和处理HTTP请求?

Android 中带有选择器的 Java TCP 服务器 NIO

java - 在 Android 中使用 JCIFS