返回信息流1、先发下我得到的结果:
标题:机械制造业:打造多系统一体化的信息平台
摘要: 97%E4%BA%AC%E4%BA%8C%E4%B8%83%E8%BD%A6%E8%BE%86%E5%8E%82%E7%9A%84%E4%BF%A1%E6%81%AF%...%9A%84%E7%8E%B0%E8%B1%A1%E3%80%82%E9%80%9A%E8%BF%87%E5%87%
标题:李博诺:IBM一直把投资专注于四个具高潜力的领域
摘要: 83%BD%E8%AE%B2%E6%99%AE%E9%80%9A%E8%AF%9D%EF%BC%8C%E4%B8%8D%E8%83%BD%E8%AE%B2%E4%B8%AD%E6%96%87%EF%BC%8C%E4%BD%86%E6%98%AF...%8D%E4%B8%80%E6%
2、简单说一下我这个程序的功能:
前台是一个文本框,输入关键字,然后自动填写参数向网易的新闻搜索引擎发送HTTP请求,然后格式化返回结果。
3、查询页面代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="Postcnki.jsp">
输入:<input type="text" name="search">
<input type="submit" value="提交">
</form>
</body>
</html>
4、查询处理代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
import ="com.test.*"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String search=request.getParameter("search");
request.getPathInfo();
//search = java.net.URLEncoder.encode(search);
%>
<%=search%>
<%
PostTest.execution(search);
%>
<%for(int i=0;PostTest.news_title[i]!="";i++){%>
<br>标题:<%=PostTest.news_title[i]%>
<br>摘要:<%=PostTest.news_summary[i]%><br><br><br>
<%}%>
</body>
</html>
其中
PostTest.execution()是我自己写的一个方法
5、PostTest.execution()中与编码可能相关的代码:
public static void execution(String search) throws Exception {
PostMethod postMethod = new PostMethod(
"http://news.youdao.com/search");
String search_Ending=StrToURL(search);
NameValuePair[] data = {
new NameValuePair("q", search_Ending),
new NameValuePair("start", "0"),
new NameValuePair("length", "10"),
new NameValuePair("ue", "utf8"),
new NameValuePair("s", ""),
new NameValuePair("tl", ""),
//new NameValuePair("keyfrom", "search.index")
};
// 将表单的值放入postMethod中
postMethod.setRequestBody(data);
System.out.println(postMethod.getResponseCharSet());
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(1000*60*10);
HttpClientParams params = new HttpClientParams();
params.setContentCharset("UTF-8");
client.setParams(params);
int status = 0;
//try {
status = client.executeMethod(postMethod);
// }
// catch (HttpException e) {
// e.printStackTrace();
// }
// catch (IOException e) {
// e.printStackTrace();
//}
if (status == HttpStatus.SC_OK) {
//try {
String result = postMethod.getResponseBodyAsString();
java.io.PrintWriter pw = new java.io.PrintWriter(new java.io.FileOutputStream(new java.io.File("E:\\result.html")));
pw.write(result);
pw.close();
//抽取文本信息
String x1=readTextAndLinkAndTitle(result);// 调用readTextAndLinkAndTitle 函数进行解析
java.io.PrintWriter pw2=new java.io.PrintWriter(new java.io.FileOutputStream(new java.io.File("E:\\cnki.txt")));// 将抽取结果写入文本文件
pw2.write(x1.toString().trim());
pw2.close();
// }
// catch (IOException e) {
//e.printStackTrace();
// }
}
postMethod.releaseConnection();
}
情况就是这样,查了半天也不知道怎么解决,望大牛解答,万分感激!
这是一条镜像帖。来源:北邮人论坛 / java / #14571同步于 2010/5/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【求助】JSP的编码问题,望大牛解答,谢谢!
MeForever
2010/5/13镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
唉,又是编码问题
1. charset设置,是告诉看到这篇文档的浏览器,需要用什么方式解码。
2. 你得知道这个JSP文件本身是什么编码方式保存的。
3. 为了正确显示,charset指定的设置,应该和你JSP文件本身保存的编码相同。
4. 涉及到数据库的操作,要搞清楚数据库是按照什么编码方式保存的。
5. 从数据库读出数据显示到页面时,如果charset和数据库的编码方式不同,那么要做适当的转换。