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 = newString(pageSrc.getBytes("UTF-8"),"GBK"),依然无效。

在焦头烂额时想到了以前在学校时经常用的一句话:找问题要会追根溯源。仔细想想,字符串里面的文本内容也是通过文件流获取的,既然转换字符串字符编码不起作用,那可以设置文件流的默认编码吗?查了jdk,是可行的。

private static final String CHARSET = "UTF-8";

InputStream ins = getMethod.getResponseBodyAsStream();

//按指定的字符集构建文件流
BufferedReader br = new BufferedReader(newInputStreamReader(ins,CHARSET));
StringBuffer sbf = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null)
{
sbf.append(line);
}

br.close();

问题解决,^_^。这里的CHARSET要根据实际情况设置



http://blog.sina.com.cn/s/blog_a1b205bb0101aer6.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值