来自解析的html文本的字符集编码问题

时间:2017-10-24 06:51:54

标签: android encoding utf-8 character-encoding

我有一些字符集编码/解码问题。

我正在做的是:

  1. 我正在实施像facebook这样的UrlPreivewLoader类。
  2. 我正在使用volley stringrequest从网上获取HTML文档。
  3. 我正在解析标题,图像,描述的元标记(例如og:title)
  4. 我想支持各种语言,任何链接。
  5. 问题是,某些链接的标题和说明文字未在我的Android应用中正确显示(破解)。

    我已经尝试了几个链接的建议,如下所示。 UTF-8 encoding in Volley Requests

    public static String fixEncodingUnicode(String response) {
        String str = "";
        try {
            str = new String(response.getBytes("ISO-8859-1"), "UTF-8");
        } catch (UnsupportedEncodingException e) {
    
            e.printStackTrace();
        }
    
        String decodedStr = Html.fromHtml(str).toString();
        return  decodedStr;
    }
    

    似乎它适用于一些英文网页,但在非英文网页中不起作用,例如charset是EUC-KR。所以我决定了解编码和解码对的所有组合,如下所示。而且我发现一些配对正常。

    问题是,如何为所有语言(包括非英语alpabets)设置适当的编码/解码对?

    public static void checkEncodingCombination(String parsedHtmlTitle) {
        String str = "";
        for (Map.Entry<String, Charset> entry : Charset.availableCharsets().entrySet()) {
            for (Map.Entry<String, Charset> entry2 : Charset.availableCharsets().entrySet()) {
                try {
                    str = new String(parsedHtmlTitle.getBytes(entry.getValue().toString()), entry2.getValue().toString());
                    LOGS.d(TAG, "encodingCharset: " + entry.getValue().toString()
                            + ", decodingCharset: " + entry2.getValue().toString() + ", str: " + str);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    提前谢谢!:)

0 个答案:

没有答案