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>
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>
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"));
解决办法: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");%>
恩!!这几个比较全!!张孝祥的 web开发内幕 就有介绍!!不错的
<%@ page language="java" pageEncoding="UTF-8"%>