我正在使用 Java 抓取维基百科页面,以提取信息框中包含的信息。
除了字符编码之外,一切正常。 维基百科页面使用“UTF-8”编码。
Ubuntu eclipse 控制台也使用“UTF-8”作为默认编码。
然而,当显示抓取的信息时,Eclipse 控制台会显示一些奇怪的符号。 (例如:Smith·Ricardo
而不是 Smith·Ricardo
)
这是我用来读取数据的函数(它遍历节点的所有后代并在末尾加入它们的文本信息):
private String getTextContent(Node node) {
String text = "";
List<Node> children = null;
if (isTextNode(node)) {
return node.getNodeValue();
}
else if (!node.hasChildNodes()) {
return "";
}
else {
children = toList(node.getChildNodes());
for (Node childNode : children) {
text += getTextContent(childNode);
}
}
return text;
}
我忘了提及我正在使用 JTidy 库进行抓取。
最佳答案
控制台可能会正确解释 UTF-8,但如果您在通过网络读取数据时得到了错误的编码,那么您就会遇到问题。
指定 UTF-8 作为 JTidy 使用的编码。
关于Java抓取字符集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878424/