Java刮取字符集问题
我正在用Java抓取维基百科页面,以便提取信息框中包含的信息 除了字符编码之外,所有的工作都很好。 维基百科页面使用“UTF-8”编码 Ubuntu的eclipse控制台也使用“UTF-8”作为默认编码。 但是,eclipse控制台在显示已删除的信息时会显示一些奇怪的符号。(例如:Java刮取字符集问题,java,eclipse,ubuntu,character-encoding,wikipedia,Java,Eclipse,Ubuntu,Character Encoding,Wikipedia,我正在用Java抓取维基百科页面,以便提取信息框中包含的信息 除了字符编码之外,所有的工作都很好。 维基百科页面使用“UTF-8”编码 Ubuntu的eclipse控制台也使用“UTF-8”作为默认编码。 但是,eclipse控制台在显示已删除的信息时会显示一些奇怪的符号。(例如:Smith·Ricardo而不是Smith·Ricardo) 这是我用来读取数据的函数(它遍历一个节点的所有子体,并在最后连接它们的文本信息): 私有字符串getTextContent(节点){ 字符串文本=”; Li
Smith·Ricardo
而不是Smith·Ricardo
)
这是我用来读取数据的函数(它遍历一个节点的所有子体,并在最后连接它们的文本信息):
私有字符串getTextContent(节点){
字符串文本=”;
List children=null;
if(isTextNode(node)){
返回node.getNodeValue();
}
如果(!node.hasChildNodes()),则为else{
返回“”;
}
否则{
children=toList(node.getChildNodes());
用于(节点子节点节点:子节点){
text+=getTextContent(childNode);
}
}
返回文本;
}
我忘了提到我正在使用JTidy库进行刮取。进入Eclipse项目右键单击>运行配置>公共选项卡,并在那里检查UTF-8。控制台可能正确解释UTF-8,但如果在网络上读取数据时编码错误,那你就会遇到问题
指定UTF-8作为JTidy使用的编码。向我们展示一些代码-您在读取数据时是否明确指定了编码?我在读取数据时没有指定任何编码。您知道您不需要对维基百科进行筛选吗?你可以!控制台可能正确地解释了UTF-8,但是如果在通过网络读取数据时编码错误,那么您将遇到问题。JTidy是否允许您指定编码?或者你能为JTidy提供你自己的
InputStreamReader
?@JoachimSauer:我知道。但我只是不想。
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;
}