zoukankan      html  css  js  c++  java
  • HttpClient 处理中文乱码

    HttpClient 请求的中文乱码问题 
    相关类库: 
    commons-codec-1.3.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar 

    --给请求传递参数

    HttpClient client = new HttpClient();

    HttpMethod method= new PostMethod(url);

    HttpMethodParams params = new HttpMethodParams();

    params.setContentCharset("GB2312");

    method.setParams(params);

     

    方式一:
    最简单的方式,直接输出页面,这里基本上不需要任何设置。

    System.out.println(getMethod.getResponseBodyAsString());

     

    方式二:
    使用流方式读取

    InputStream in = getMethod.getResponseBodyAsStream();

    //这里的编码规则要与上面的相对应

    BufferedReader br = new BufferedReader(new InputStreamReader(in,"GB2312"));

    String tempbf;

    StringBuffer html = new StringBuffer(100);

    while ((tempbf = br.readLine()) != null) {

        html.append(tempbf +" ");

    }

    System.out.println(html.toString());

     

    方式三:
    当然还可以使用这样的方式,因为默认是使用ISO-8859-1,无非就是多进行了几次转码 

    InputStream in = getMethod.getResponseBodyAsStream();

    //这里使用8859-1读取

    BufferedReader br = new BufferedReader(new InputStreamReader(in,"ISO-8859-1"));

    String tempbf;

    StringBuffer html = new StringBuffer(100);

    while ((tempbf = br.readLine()) != null) {

        html.append(tempbf +" ");

    }

    //将8859-1再次转成GB2312

    System.out.println(new String(html.toString().getBytes("ISO-8859-1"),"GB2312"));


    我还是建议使用第一种方法,但我认为本质上是一致的 
    对于请求部分还可以通过如下几种方式进行设置 

    getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"GB2312");

    getMethod.addRequestHeader("Content-Type", "text/html; charset=gb2312");

    转自:http://871421448.iteye.com/blog/1546950

  • 相关阅读:
    VS缓冲区溢出,未对变量进行检查
    Mutex与Event控制互斥事件的使用详解
    error LNK2019: 无法解析的外部符号
    [转] 兼容IE和Firefox的设为首页和收藏的Javascript代码
    [转]超时时间以到,但尚未从池中获取连接
    Datalist的嵌套使用
    由服务器端向客户端输出脚本
    几个国外的XHTML模板站,DIV+CSS模板下载(转)
    gridview隐藏某一列
    [转]简单谈基于SQL SERVER 分页存储过程的演进
  • 原文地址:https://www.cnblogs.com/yixiu868/p/6637645.html
Copyright © 2011-2022 走看看