您的位置:首页 > 其它

Nutch乱码的问题---对于一些老文章做的新调整

2010-07-13 10:46 351 查看
网上已经有很多关于解决乱码问题的帖子,在这里我所说的是解决cache(网页快照)页面的乱码的问题,而且网页快照乱码解决后,是支持各类编码的网页都能正常显示,而不再出现乱码。原来的文章都是只针对一种编码,例如utf-的页面显示正常,但是GBK的就会出现乱码

原来的修改:

content=new string(bean.getcontent(details));

修改为:content=new string(bean.getcontent(details),"utf-8")

这样处理,则会出现gb2312,gbk编码的网页出现乱码,其它类编码的网页都会显示正常。

还有一些文章是对Metadata修改parseDate的contentmeta来实现获取正确的编码方式,这个思路是非常正确的,但是还是有一点问题,仍然会存在一些gb2312的页面出现乱码,我对代码又进行了修改和测试,最终发现一个最简单的办法

完整代码如下:

修改cache.jsp

ParseData ParseData = bean.getParseData(details);

String content = null;
String contentType = ParseData.getMeta(Metadata.CONTENT_TYPE);
if (contentType.startsWith("text/html")) {
// FIXME : it's better to emit the original 'byte' sequence
// with 'charset' set to the value of 'CharEncoding',
// but I don't know how to emit 'byte sequence' in JSP.
// out.getOutputStream().write(bean.getContent(details)) may work,
// but I'm not sure.
String encoding = ParseData.getMeta("CharEncodingForConversion");
if (encoding != null) {
try {
content = new String(bean.getContent(details), encoding);
}
catch (UnsupportedEncodingException e) {
// fallback to windows-1252
content = new String(bean.getContent(details), "windows-1252");
}
}
else
content = new String(bean.getContent(details),"GBK");
}

经测试,所有页面都正常显示,无乱码了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: