Jsoup将网页上的ISO-8859-1文本编码为另一种编码

时间:2016-08-10 13:42:48

标签: jsoup

该文字来自网页,已在ISO-8859-1;

首先让我向您展示一个问题的示例。我们来自网页Mark Helström的其中一段文字。当我使用Jsoup解析页面时,该文本将变为:Mark Helström

以下是网页代码的示例:

<body>
    <p>Mark Helström</p>
</body>

以下是我解析网页的代码:

    String url = "http://localhost:8080/translator/test";
    Document doc = Jsoup.connect(url).get();

    System.out.println("charset=" + doc.outputSettings().charset());

    doc.outputSettings().charset(Charset.forName("ISO-8859-1"));

    System.out.println("charset=" + doc.outputSettings().charset());

    for(Element code : doc.select("*")) {
        System.out.println("code=" + code.ownText());               
    } 

以下是上述代码生成的输出:

charset=ISO-8859-1
charset=ISO-8859-1
code=
code=
code=
code=
code=Mark Helström

1 个答案:

答案 0 :(得分:0)

当我为这些字符解析此页面时似乎工作正常。

    Document doc = Jsoup
            .connect("http://stackoverflow.com/questions/38875180/jsoup-is-encoding-iso-8859-1-text-thats-on-a-webpage-to-another-encoding")
            .get();

    System.out.println("charset=" + doc.outputSettings().charset());

    doc.outputSettings().charset(Charset.forName("ISO-8859-1"));

    System.out.println("charset=" + doc.outputSettings().charset());

    for (Element code : doc.select(".post-text p code:contains(mark)"))
        System.out.println("code=" + code.ownText());

<强>控制台

charset=UTF-8
charset=ISO-8859-1
code=Mark Helström
code=Mark Helström