我用Nutch抓取页面,在索引之前,我将内容保存到Fetcher类中的单独文件中,所以我不使用-readseg从索引文件中取回它们。但是,“ü”和“ç”等特殊字符保存为“?”。
我做了Nutch Wiki 页面中推荐的一切。编辑了标签的编码属性为UTF-8,它仍然不起作用。我遇到了一些关于在系统文件中更改语言的建议。我在Ubuntu 11.10工作。
我用Nutch抓取页面,在索引之前,我将内容保存到Fetcher类中的单独文件中,所以我不使用-readseg从索引文件中取回它们。但是,“ü”和“ç”等特殊字符保存为“?”。
我做了Nutch Wiki 页面中推荐的一切。编辑了标签的编码属性为UTF-8,它仍然不起作用。我遇到了一些关于在系统文件中更改语言的建议。我在Ubuntu 11.10工作。
我能想到的有3种可能性:
我已经用 Nucth 抓取了包含中文字符的页面,并且我能够在readseg
输出中看到一些乱码(这是使用 nutch 1.0)。后来我安装了一些语言插件并在终端中调整了设置,我可以看到这些字符。所以,我认为#3 不太可能,你必须关注#1 和#2。
我在想我已经解决了编码问题。请看下面的代码:
co = true;
fe = true;
ge = true;
pa = true;
pd = true;
pt = true;
SegmentReader segmentReader2 = new SegmentReader(crwlNutchCommon.nutch_conf, co, fe, ge, pa, pd, pt);
HashMap<String, List<Writable>> hm = new HashMap<String, List<Writable>>();
segmentReader2.get(path, new Text("some_url"),
new OutputStreamWriter(new FileOutputStream("somefile1"), "UTF-8"),hm);
文件 somefile1 可能有错误的编码,但更进一步:
FileOutputStream fos;
DataOutputStream dos;
File file= new File("somefile2");
fos = new FileOutputStream(file);
dos=new DataOutputStream(fos);
hm.get("co").get(0).write(dos); // look
这行得通!somefile2 将是“原始的”,没有任何编码修改,但在开头和结尾有一些额外的数据 - 我认为可以解析它们分析“Content.java”源文件。
跟着你,我决定修改 Fetcher 类并添加支持将内容直接保存到 mysql 数据库。它工作得更好更快。