做了个投票系统,当添加投票项item时,添加成功了,但是中文乱码,显示的是问号,我测试了下,发现从manage.jsp中获得的additem到add.jsp就无法正常显示中文,可是我有 String additem=new String(request.getParameter("additem").getBytes("iso8859-1"),"GBK"); 请问到底是哪里出了问题?
代码:manage.jsp
<%@page contentType="text/html;charset=GBK" import="java.sql.*" %><%@include file="check.jsp" %>
<jsp:useBean id="db" class="bean.QueryBean" scope="session"/>
<center>
<h2>系统维护</h2>
<table border bordercolor=blue>
<tr><th colspan="3" bgcolor=yellow>删除投票项</th>
<%
request.setCharacterEncoding("GBK");
Connection conn=db.setConnection("movie");
ResultSet rs=db.getQuery("select * from vote");
int i=1;
while(rs.next())
{
out.println("<tr>");
out.println("<td>"+i+"</td>");
out.println("<td>"+rs.getString("item")+"</td>");
out.println("<td align='center'><a href='delete.jsp?delid="+rs.getString("id")+"'>删除</a></td>");
i++;
}
%>
<tr><th colspan="3" bgcolor=blue>添加投票项</th>
<tr><td colspan="3">
<form method="post" action="add.jsp">
内容:<input type="text" name="additem" size="30"/>
<input type="submit" value=提交/>
<input type="reset" value=重置/>
</form></td>
<tr><td colspan="3" align="center" ><a href="index.jsp">返回投票页面</a></td>
</table> </td> add.jsp
<%@page contentType="text/html;charset=GBK" import="java.sql.*" %>
<jsp:useBean id="db" class="bean.QueryBean" scope="session"/>
<%
request.setCharacterEncoding("GBK");
String additem=new String(request.getParameter("additem").getBytes("iso8859-1"),"GBK");
System.out.println(additem);
if(additem!=null)
{
String sql="insert into vote(item,c)values('"+additem +"','"+0+"')";
db.setModify(sql);
db.close();
}
%>
<jsp:forward page="manage.jsp"/>
代码:manage.jsp
<%@page contentType="text/html;charset=GBK" import="java.sql.*" %><%@include file="check.jsp" %>
<jsp:useBean id="db" class="bean.QueryBean" scope="session"/>
<center>
<h2>系统维护</h2>
<table border bordercolor=blue>
<tr><th colspan="3" bgcolor=yellow>删除投票项</th>
<%
request.setCharacterEncoding("GBK");
Connection conn=db.setConnection("movie");
ResultSet rs=db.getQuery("select * from vote");
int i=1;
while(rs.next())
{
out.println("<tr>");
out.println("<td>"+i+"</td>");
out.println("<td>"+rs.getString("item")+"</td>");
out.println("<td align='center'><a href='delete.jsp?delid="+rs.getString("id")+"'>删除</a></td>");
i++;
}
%>
<tr><th colspan="3" bgcolor=blue>添加投票项</th>
<tr><td colspan="3">
<form method="post" action="add.jsp">
内容:<input type="text" name="additem" size="30"/>
<input type="submit" value=提交/>
<input type="reset" value=重置/>
</form></td>
<tr><td colspan="3" align="center" ><a href="index.jsp">返回投票页面</a></td>
</table> </td> add.jsp
<%@page contentType="text/html;charset=GBK" import="java.sql.*" %>
<jsp:useBean id="db" class="bean.QueryBean" scope="session"/>
<%
request.setCharacterEncoding("GBK");
String additem=new String(request.getParameter("additem").getBytes("iso8859-1"),"GBK");
System.out.println(additem);
if(additem!=null)
{
String sql="insert into vote(item,c)values('"+additem +"','"+0+"')";
db.setModify(sql);
db.close();
}
%>
<jsp:forward page="manage.jsp"/>
<filter-name>EncodeingFilter</filter-name>
<filter-class>com.sail.cot.common.filter.EncodeingFilter</filter-class>
<init-param>
<description>是否配置编码过滤器</description>
<param-name>useEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<description>配置使用的编码格式</description>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodeingFilter</filter-name>
<url-pattern>*.do</url-pattern>
<url-pattern>/servlet/*</url-pattern>
<url-pattern>*.action</url-pattern>
</filter-mapping>
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpRequest.setCharacterEncoding(defaultEncodeing);
httpResponse.setContentType("text/html; charset=" + defaultEncodeing);
httpResponse.setCharacterEncoding(defaultEncodeing);
System.out.println("url is " + httpRequest.getRequestURI());
//response.setContentType("text/xml;charset=utf-8");
chain.doFilter(request, response);
}
String additem=new String(request.getParameter("additem").getBytes("iso8859-1"),"GBK");
应该这样
//request.setCharacterEncoding("GBK");
String additem=new String(request.getParameter("additem").getBytes("iso8859-1"),"GBK");
要么request.setCharacterEncoding("GBK");
String additem= request.getParameter("additem");
// String additem=new String(request.getParameter("additem").getBytes("iso8859- //1"),"GBK");