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

网上已经有很多关于解决乱码问题的帖子,在这里我所说的是解决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");
  }

 

经测试,所有页面都正常显示,无乱码了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半熟的皮皮虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值