HttpClient  向一个jsp发送了 Post 请求,返回的 HTML 有乱码,怎么办呢?能告诉又什么解决办法么,我把 JSP JAVA写的客户端 和 返回的html贴上来了,大家看看吧,我用的是 英文操作系统我写的客户端程序import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;public class SimpleClient {
public static void main(String[] args) throws IOException
{
HttpClient client = new HttpClient(); 
//设置代理服务器地址和端口 
//client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port);
//使用GET方法,如果服务器需要通过HTTPS连接,那只需要将下面URL中的http换成https
HttpMethod method = new GetMethod("http://localhost:8080/ghwtry/time.jsp"); 
//使用POST方法
//HttpMethod method = new PostMethod("http://localhost:8888/abc/a.jsp"); 
client.executeMethod(method);
//打印服务器返回的状态
System.out.println(method.getStatusLine());
//打印返回的信息
System.out.println(method.getResponseBodyAsString());
//释放连接
method.releaseConnection();
}
}
写的JSP<html> 
  <head> 
   <title>Time</title> 
  </head> 
  <body> 
   <H3>Today is: 
   <%= new java.util.Date() %> 
   </H3> 
  </body> 
</html>返回的 HTML 如下HTTP/1.1 200 OK
<html> 
隆隆隆隆<head> 
隆隆隆隆 <title>Time</title> 
隆隆隆隆</head> 
隆隆隆隆<body> 
隆隆隆隆 <H3>Today is: 
隆隆隆隆 Mon Mar 22 11:18:32 EST 2010 
隆隆隆隆 </H3> 
隆隆隆隆</body> 
</html>

解决方案 »

  1.   

    乱码的问题有好多种可能,我说几点吧,首看下你的开发环境是用的什么编码,再看下你浏览器用的是什么编码,是好统一,如果还是不行的话,看下你的JAR用的是什么编码,你最好用一个过滤器来设置乱码问题,如果有用数据库的话看下数据库用什么编码,最好将他们都统一用一种编码
      

  2.   

    更改HTML的编码 要不你POST过去的数据就是乱码 可以写个过滤器过滤下 也可以硬编码下
      

  3.   

    1.最基本的在jsp页面上要把pageEncoding设置为中文,如: <%@ page language="java" pageEncoding="GBK"%> 2.对于表单的doPost()提交,也会出现中文出现乱码,可以在servlet里设置如下:request.setCharacterEncoding("GBK"),response.setCharacterEncoding("GBK"),不过此方法在每个servlet都要设置,很麻烦,建议写个过滤器设置。可以参考以下: 
        public void doFilter(ServletRequest request, ServletResponse response, 
    FilterChain chain) throws IOException, ServletException { HttpServletRequest request_1 = (HttpServletRequest) request; 
    HttpServletResponse response_1 = (HttpServletResponse) response; // 转换编码,并且加上去缓存 
    request_1.setCharacterEncoding("GBK"); 
    response_1.setCharacterEncoding("GBK"); 
    chain.doFilter(request, response); } 
    3、第三种就是 如果用doGet()提交,后面跟的参数如果也是中文,这个解决方法可以在tomcat或JBoss的配置文件里面配置,以tomcat为例: 
         <Connector port="8099" maxHttpHeaderSize="8192" 
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
    enableLookups="false" redirectPort="8443" acceptCount="100" 
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/> 
      在这里面最后加上URIEncoding="GBK". 
    4、ajax也会产生乱码问题,这个问题可以在tomcat的配置那里解决。 5、文件上传时文件名也会出现乱码。 
    可以用此方法paramMap.put(fi.getFieldName(), new String(fi.getString().getBytes("ISO-8859-1"),"GBK"));
      

  4.   

    场合:页面本身有中文的时候
    解决办法:servlet:resp.setContentType("text/html;charset=gbk");
    Jsp: <%@ page contentType="text/html;charset=gb2312"%>
    注意:一定要写在PrintWriter out = resp.getWriter();之前
    场合:解决get方式乱码问题:
    解决办法:修改server.xml ?URIEncoding="GBK"
    场合:解决post方式提交内容的乱码
    解决办法:request.setCharacterEncoding("GBK");
    注意:一定要写在存取第一个参数之前 
    不要调用response.setCharacterEncoding("GBK");
    场合:<jsp:param name="user" value="<%=s%>"/>,url地址包含中文参数
    解决办法:<%request.setCharacterEncoding("GBK");%>
      

  5.   


    恩!!这几个比较全!!张孝祥的  web开发内幕 就有介绍!!不错的
      

  6.   

     添加上
    <%@ page language="java" pageEncoding="UTF-8"%>