0

Jsoup API を使用していくつかの Web ページを解析しています。しかし、私はページを1つの文字セットで取得し、それらを他の文字セットに解析する必要があります

問題: 行 1 を行 2 に解析する方法は?

String str1 = "Um grupo ligado à al-Qaeda assumiu o "
    + "ataque e ameaçou fazer outros.";

String str2 = "Um grupo ligado à al-Qaeda assumiu o "
    + "ataque e ameaçou fazer outros.";

//(The text above translate to some news about WTC)
4

3 に答える 3

0

私はこのテーマの専門家ではありませんが、あなたが求めている答えはhttp://www.davidcraddock.net/tag/beautifulsoup/にあると思います。

于 2012-05-22T16:56:02.193 に答える
0

JTidy ソリューションに少し似ています。名前付きエンティティなど&agrave;は、HTML を維持する w3c.org の .dtd ファイルで定義されています<!DOCTYPE ...。それらをローカルにコピーして解析します (簡単)。その後、エンティティをすぐに Unicode 文字列に置き換えるか、数値エンティティを作成できます。

于 2012-05-22T17:23:20.650 に答える
0

Jsoupを実際にテストしたことはありませんが、class を使用して HTML を XML に変換する必要があるとき、JTidy は非常に役に立ちましorg.w3c.tidy.Tidy。これにより、エンティティが自動的に変換されます。

static String str1 = "Um grupo ligado &agrave; al-Qaeda assumiu o "
        + "ataque e amea&ccedil;ou fazer outros.";

public static void main(String[] args) throws Exception {
    System.out.println(cleanData(str1));
}

private static String cleanData(String data) throws UnsupportedEncodingException {
    Tidy tidy = new Tidy();
    tidy.setNumEntities(true); // to num entities
    tidy.setPrintBodyOnly(true); // only print the content
    tidy.setWraplen(Integer.MAX_VALUE); // wrap
    ByteArrayInputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8"));
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    tidy.parseDOM(inputStream, outputStream);
    return outputStream.toString("UTF-8");
}

必要に応じて のインスタンスを取得することもできますDocument

public org.w3c.dom.Document parseDOM(Reader in, Writer out)
public org.w3c.dom.Document parseDOM(InputStream in, OutputStream out)
于 2012-05-22T17:15:36.657 に答える