为什么 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 编码,它应该可以正确显示。
我正在尝试了解以下内容。我有一些代码从 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 编码,它应该可以正确显示。