kaka_3
kaka_3
2009-10-12 10:53
浏览 397
已采纳

请教httpclient4.0中文乱码的问题

页面返回response里没设置charset,meta里设置了charset=gbk,获取页面出现中文乱码
,httpclient4.0要怎么设置编码啊?网上资料比较少
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(HttpProtocolParams.HTTP_CONTENT_CHARSET,"GBK");
以上设置没有用?

代码:
DefaultHttpClient client = new DefaultHttpClient();

    HttpGet httpget = new HttpGet(
            "http://www.ningdaren.com/");

    HttpResponse response = client.execute(httpget);
    HttpEntity entity = response.getEntity();

    System.out.println("登陆前页面返回状态信息----------:");
    System.out.println(response.getStatusLine());
    Header[] headers = response.getAllHeaders(); // 返回的HTTP头信息
    for (int i = 0; i < headers.length; i++) {
        System.out.println(headers[i]);
    }

//返回页面信息
if(entity!= null){
String responseString = new String(EntityUtils.toString(entity).getBytes("gbk"));
System.out.println(responseString);
}

    System.out.println("----------------------------------------");
    if (entity != null) {
        entity.consumeContent();
    }

[b]问题补充:[/b]
具体要怎么设置啊,我试了很多函数都没用。。
httpget.addHeader("Content-Type","application/x-www-form-urlencoded; charset="utf-8")没用啊

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • kun20031029
    kun20031029 2009-10-20 14:13
    已采纳

    把得到的responseString进行下编码就行,如下:
    responseString = new String(responseBody.getBytes("ISO-8859-1"),"UTF-8")

    点赞 评论
  • wanghaolovezlq
    wanghaolovezlq 2009-10-12 10:57

    这么急用这么新的,3.0都够用了,哈哈,还没研究过4。0

    点赞 评论
  • wanghaolovezlq
    wanghaolovezlq 2009-10-12 10:59
    点赞 评论
  • iteye_20589
    iteye_20589 2009-10-12 11:00

    这样试试
    [code="java"]httpget.addRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");[/code]

    点赞 评论
  • Disney2002
    Disney2002 2009-10-12 12:10

    关于乱码的问题, 始终坚持一个原则, 入口和出口的字符编码保持一致。最好都是同一为UTF8

    点赞 评论