为什么 JSoup 打印一个问号

Why is JSoup printing a question mark

我正在尝试了解以下内容。我有一些代码从 gutenberg.org 读取页面。几乎一切都很好,但有些角色不是。他们在浏览器中没问题。

package nl.atticworks.gutenberg;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;

public class Gutenberg {

    private static final String GET_URL = "http://www.gutenberg.org/browse/languages/nl";

    public static void main(String[] args) {
        try {
            Document doc = Jsoup.connect(GET_URL).get();
            Elements data = doc.select("div.pgdbbylanguage");
            for (Element d : data) {
                Elements children = d.select("*");
                for (Element child : children) {
                    if (child.tagName().equals("ul")) {
                        Element author = children.get(children.indexOf(child) - 1);
                        String a1 = author.select("a:last-child").text();
                        if (a1.startsWith("Kara")) {
                            System.out.println(a1);
                            Elements titles = child.select("li.pgdbetext a");
                            for (Element title : titles) {
                                System.out.println("\t" + title.text());
                            }
                        }
                    }
                }
            }
        } catch (IOException ex) {
            // do something...
        }
    }
}

字符串 a1 打印 "Karadži?, Vuk Stefanovi?, 1787-1864" 但应该打印 "Karadžić, Vuk Stefanović, 1787-1864"

我很确定编码是正确的 (UTF-8),但是带尖音符的 c 编码不正确。

不过,浏览器确实会显示正确的字符,而 Jsoup 则不会。为什么?

此致, 汉斯

我在自己的IDEA上试了这段代码,结果和你预想的一样。 所以我坚持认为编码是问题。

因为你没有说你是什么运行你的程序很难给出明确的答案,但基本上你的代码没有问题。 JSoup 不对您的显示问题负责,无论您在哪个控制台上显示都是问题。

如果您将控制台(或 IDE)设置为 UTF-8 编码,它应该可以正确显示。