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");
}
经测试,所有页面都正常显示,无乱码了。
原来的修改:
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");
}
经测试,所有页面都正常显示,无乱码了。
相关文章推荐
- 中文乱码问题的一些解决方案
- 一些关于中文乱码问题的一些解决方案分类
- 在PHP中PDO解决中文乱码问题的一些补充
- JAVA乱码问题分析参考文章
- ajax以及一些乱码问题
- 对于文章页面优化的一些看法
- 看Struts2技术内幕,对于书中提出的问题,参考其他前辈的文章所写
- VS2010调试时,对于一些语句不能单步运行也不能对变量添加监视的问题
- android学习好的文章及一些问题的解决方法书签整理
- 一些关于中文乱码问题的一些解决方案和经验
- 截断显示文章标题时,出现乱码或者“?”问号的问题
- JavaWeb中的一些简单操作(四) 页面间的跳转的本质以及url乱码问题解决
- 浏览器兼容问题,一直是自己最头疼,一直回避的问题,今天看得到了一些启发,发奋今天开始研究这个,哈哈,以下为转载文章,好好学习。
- 关于中文乱码问题的一些解决方案和经验
- 【iOS】对于iPhone5分辨率兼容性调整问题
- nutch2.0+cassandra中文网页乱码问题
- mysql5.5字符集设置的一点变化(对于中文乱码问题,需要设置mysql字符集)
- 新文章尚邮使用评论 ,包含Gmail的设置以及存在的一些问题
- 解决Get和Post请求中中文乱码问题 (2013-01-26 23:59:39)转载▼ 标签: javaee it 分类: JavaEE 对于Post请求,只需在Servlet或者jsp中写入如下
- 对于makefile传递参数的一些问题