我的网页抓取与Nutch的和索引之前,我保存的内容到单独的文件中提取程序类,所以我不使用-readseg让他们从索引文件返回。但是,“ü”和“ç”等特殊字符保存为“?”。Nutch的没有得到UTF-8字符
我做了Nutch Wiki page中的所有建议。编辑标记的编码属性为UTF-8,它仍然不起作用。我遇到了一些关于在系统文件中进行语言更改的建议。我在Ubuntu 11.10工作。
我的网页抓取与Nutch的和索引之前,我保存的内容到单独的文件中提取程序类,所以我不使用-readseg让他们从索引文件返回。但是,“ü”和“ç”等特殊字符保存为“?”。Nutch的没有得到UTF-8字符
我做了Nutch Wiki page中的所有建议。编辑标记的编码属性为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"),
新OutputStreamWriter(新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”源文件。
感谢您的回复,但我已经得到了解决方案。 Nutch正在获得UTF-8字符。我所做的是将** Fetcher **类中的** content **变量转换为从内容本身检索的编码。 – 2012-05-14 07:35:57
跟着你我决定修改Fetcher类,并添加支持将内容直接保存到mysql数据库。它工作得更好更快。
很高兴听到这个消息。 – 2012-05-15 14:47:38
正如我所说的,我不使用** - readseg **,我在** Eclipse **中运行** Nutch **。我打开了一个新项目并复制了我的文件保存代码块,并尝试保存一个具有特殊字符的字符串并成功。我认为这排除了#1和#2的可能性。 ** Eclipse **的配置字符编码是UTF-8。我会专注于#3。你说“我安装了一些语言包”,你包括了什么?你可以提供一些关于这些插件的具体信息。 – 2012-04-20 07:11:48
另一件事是,我试图从包含特殊字符的浏览器保存**。html **文件。当我在gedit中打开保存的文件时,我看到特殊字符无法保存,但用“ý”替换为“ı”和“þ”替换为“ş”。 – 2012-04-20 07:31:25
我已经安装了Windows语言支持插件,并在腻子上改变了一些设置。 (我不使用日食。我有一个Linux服务器,我通过腻子从Windows m/c连接到它)。 – 2012-04-20 13:54:15