Android

时间:2015-08-21 16:51:54

标签: android

我有一些代码可以解析html字符串并将其转换为常规字符串。

输入:

  

Lorem ipsum dolor坐下来,精神上的精神。 Vivamus a   元素nisl。 Cras interdum velit non ex gravida dapibus。 Donec   cursus tempor lacus eget finibus。 Donec euismod enim vitae nibh   blandit,

屏幕2上的输出:

  

Lorem ipsum dolor sit amet,consectetur adipiscing elit = 2E Vivamus a   elem = entum nisl = 2E Cras interdum velit non ex gravida dapibus = 2E   Donec cursus tempor lacus eget finibus = 2E Donec euismod enim vitae   nibh blandit,

然而,在屏幕1上,输出与输入匹配。我的问题是在我的代码中可能导致这个问题,我没有编写整个应用程序,所以有很多代码我必须通过找到这个bug所以我试图缩小可能导致差异的原因在两个输出中。我真的不知道为什么元素变成elem = entum,我猜这是一个换行问题?

编辑:基本上是什么会导致这两个输出不同,我该如何追踪它。

编辑2:这是辅助输入输出

输入

  

测试期间。然后...现在引用“内部引号”然后前! @#$%^& > *() - _ + = \ | [] {}; :'',。 /? <> `〜

输出

  

测试周期= 2E然后= E2 = 80 = A6现在报价= E2 = 80 = 9Cinside> q = uotes = E2 = 80 = 9D然后ex! @#$%^& *() - _ + = 3D \ | [] {}; =:> = E2 = 80 = 98 = E2 = 80 = 9C,= 2E /? <>” 〜

除此之外,屏幕1与输入

相同

编辑3:因为我猜我的HTML解析导致了一些问题,所以我将包含该代码,因为我知道在哪里找到它。

String bod = body.toString();


        String bod2 = cleanTagPerservingLineBreaks(bod);
        removeExtendedChars(bod2);
        String bod3 = bod2.replace("=2E", "\\.");
        return bod3;
    }

    public String cleanTagPerservingLineBreaks(String html) {
        String result = "";
        if (html == null)
            return html;
        Document document = Jsoup.parse(html);
        document.outputSettings(new Document.OutputSettings()
                .prettyPrint(false));// makes html() preserve linebreaks and
        // spacing
        document.select("br").append("\\n");
        document.select("p").prepend("\\n\\n");
        result = document.html().replaceAll("\\\\n", "\n");
        result = Jsoup.clean(result, "", Whitelist.none(),
                new Document.OutputSettings().prettyPrint(false));
        return result;
    }

    public String removeExtendedChars(String str) {
        return str.replaceAll("[^\\x00-\\x7F]", " ");
    }

0 个答案:

没有答案