概述
转载
http://hi.baidu.com/rtgguumtrjjmqsr/item/7c49ab87b2b3ef804414cfa2
httpclient中文乱码问题解决方法(收藏)
这里,介绍一种解决抓取后网页内容显示为乱码的办法。
前几天,在抓取某网站的信息时(http://www.99sj.com/Price/Price/Default.aspx),第一次碰到了这种应用下的乱码问题。于是上网查了一下,提供的解决办法大致有两种:
1> private static final String CONTENT_CHARSET = "GBK";
httpClient.getParams().setContentCharset("UTF-8");
or
httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, CONTENT_CHARSET);
2> private static final String CONTENTTYPE = " text/html; charset=GBK";
getMethod.setRequestHeader("Content-Type", CONTENTTYPE);
测试了,没有任何效果(换成UTF-8也不行)。也用了String result = new String(pageSrc.getBytes("UTF-8"),"GBK"),依然无效。
在焦头烂额时想到了以前在学校时经常用的一句话:找问题要会追根溯源。仔细想想,字符串里面的文本内容也是通过文件流获取的,既然转换字符串字符编码不起作用,那可以设置文件流的默认编码吗?查了jdk,是可行的。
private static final String CHARSET = "UTF-8";
InputStream ins = getMethod.getResponseBodyAsStream();
//按指定的字符集构建文件流
BufferedReader br = new BufferedReader(new InputStreamReader(ins,CHARSET));
StringBuffer sbf = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null)
{
sbf.append(line);
}
/** 回收资源 */
br.close();
getMethod.releaseConnection();
/** 页面源文件 */
pageSource = sbf.toString();
问题解决,^_^。这里的CHARSET要根据实际情况设置
前几天,在抓取某网站的信息时(http://www.99sj.com/Price/Price/Default.aspx),第一次碰到了这种应用下的乱码问题。于是上网查了一下,提供的解决办法大致有两种:
1> private static final String CONTENT_CHARSET = "GBK";
httpClient.getParams().setContentCharset("UTF-8");
or
httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, CONTENT_CHARSET);
2> private static final String CONTENTTYPE = " text/html; charset=GBK";
getMethod.setRequestHeader("Content-Type", CONTENTTYPE);
测试了,没有任何效果(换成UTF-8也不行)。也用了String result = new String(pageSrc.getBytes("UTF-8"),"GBK"),依然无效。
在焦头烂额时想到了以前在学校时经常用的一句话:找问题要会追根溯源。仔细想想,字符串里面的文本内容也是通过文件流获取的,既然转换字符串字符编码不起作用,那可以设置文件流的默认编码吗?查了jdk,是可行的。
private static final String CHARSET = "UTF-8";
InputStream ins = getMethod.getResponseBodyAsStream();
//按指定的字符集构建文件流
BufferedReader br = new BufferedReader(new InputStreamReader(ins,CHARSET));
StringBuffer sbf = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null)
{
sbf.append(line);
}
/** 回收资源 */
br.close();
getMethod.releaseConnection();
/** 页面源文件 */
pageSource = sbf.toString();
问题解决,^_^。这里的CHARSET要根据实际情况设置
最后
以上就是壮观马里奥为你收集整理的httpclient中文乱码问题解决方法(收藏)的全部内容,希望文章能够帮你解决httpclient中文乱码问题解决方法(收藏)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复