首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

中文乱码显示,该怎么处理

2012-01-11 
中文乱码显示insert.jsp页面%@page contentTypetext/htmlcharsetgb2312%htmlheadtitleJSP+JD

中文乱码显示
insert.jsp页面


<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>JSP+JDBC留言管理程序--登录</title>
</head>
<body>
<center>
<h1>留言管理范例 JSP+JDBC实现</h1>
<hr>
<br>
<%
request.setCharacterEncoding("gb2312");
if(session.getAttribute("name")!=null){
%>
<form action="insert_do.jsp" method="post">
<table>
<tr>
<td colspan="2">添加新留言</td>
<tr>
<tr>
<td>标题</td>
<td><input type="text" name="title"><td>
</tr>
<tr>
<td>作者</td>
<td><input type="text" name="author"></td>
</tr>
<tr>
<td>内容:</td>
<td><textarea name="content" cols="30" rows="6"></textarea></td>
</tr>
<tr>
<td>
<input type="submit" value="添加">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
<h3><a href="list_notes.jsp">回到留言列表页</a></h3>
<%
}else{
%>
您还未登录,请先登录!!!<br>
两秒后请自动跳转到登陆页面!!!<br>
若未跳转,请按<a href="login.jsp">这里</a>!!!<br>
<%
}
%>
</center>
</body>
</html>


insert_do.jsp页面


<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.sql.*"%>
<html>
<head>
<title>JSP+JDBC 留言管理程序--登录</title>
</head>
<body>
<center>
<h1>留言管理范例 JSP+JDBC实现</h1>
<hr>
<br>
<%
if(session.getAttribute("name")!=null){
%>
<%!
String DBDRIVER="com.mysql.jdbc.Driver";
String DBURL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK";
String DBUSER="root";
String DBPASSWORD="root";
Connection conn=null;
PreparedStatement pstmt=null;
response.setContentType("text/html;charset=GBK");
request.setCharacterEncoding("GBK");

%>
<%
boolean flag=false;
String title=request.getParameter("title");
String author=request.getParameter("author");
String content=request.getParameter("content");
%>
<%
String sql="insert into note(title,author,content) values(?,?,?)";
try{
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,title);
pstmt.setString(2,author);
pstmt.setString(3,content);
pstmt.executeUpdate();
pstmt.close();
conn.close();
flag=true;
}catch(Exception e)
{}
%>
<%
response.setHeader("refresh","2;url=list_notes.jsp");
if(flag){
%>
添加留言成功,两秒后将跳转到留言列表页!!!<br>
若未跳转,请按<a href="list_notes.jsp">这里</a>!!!<br>
<%
}else{
%>
添加留言失败,两秒后将自动跳转到留言列表页!!!<br>
若未跳转,请按<a href="list_notes.jsp">这里</a>!!!<br>
<%
}
%>
<%
}else{
%>
您还未登录,请先登录!!!<br>
两秒后将自动跳转到留言管理页面!!!<br>
若未跳转,请按<a href="login.jsp">这里</a>!!!<br>
<%
}
%>


</center>
</body>
</html>

在页面显示乱码


  请输入要查询的内容:  
  增加新留言
留言ID 标题 作者 内容 删除 
22 1 2 1 删除 
25 2 3 3 删除 
44 ??? 啊 啊 删除 
53 1 1 gdfd??? 删除 
60 ?? aaaa爱国v ?? 删除 
61 ??? ?? ???? 删除 
62 ?? ?? ????abcdefghi 删除 
67 2 ?? 是大法官 dv 删除 
 增加后就显示为????但是在mysql数据库中添加正常显示

[解决办法]
这些数据是从数据库取的还是?
如果从数据库取的数据,那考虑下是不是数据库的编码问题
数据库编码不对会导致你insert进去的中文都是乱码
[解决办法]
前置处理
request.setCharacterEncoding("GBK") ;
后置处理
String name = request.getParameter("uname");
name = new String(name.getBytes("ISO-8859-1"),"gbk");
还有就是工具的环境基本的编码上就可以避免
在写个过滤器 绝了
[解决办法]
建议楼主的编码要统一,包括项目、数据库、jsp页面等该成一种编码,如utf-8或GBK等,实在不行写一个编码过滤器:以后的页面都万无一失了

下面是一个编码码过滤器:CharacterEncodingFilter 


Java code
import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CharacterEncodingFilter implements Filter {        String encoding = null;        public void init(FilterConfig config) throws ServletException {        encoding = config.getInitParameter("encoding");    }    /**     * 过滤器处理方法     */    public void doFilter(ServletRequest srequest, ServletResponse sresponse,            FilterChain chain) throws IOException, ServletException {        if (null != encoding) {            HttpServletRequest request = (HttpServletRequest)srequest;            HttpServletResponse response = (HttpServletResponse)sresponse;                        // 设置页面不缓存            response.setHeader("Pragma", "No-cache");            response.setHeader("Cache-Control", "no-cache");            response.setDateHeader("Expires", 0);                        // 对请求进行编码设置            System.out.println("start......");            request.setCharacterEncoding(encoding);            response.setCharacterEncoding(encoding);            response.setContentType("text/html");            System.out.println("end......");        }        chain.doFilter(srequest, sresponse);    }    public void destroy() {            }}
[解决办法]
探讨
建议楼主的编码要统一,包括项目、数据库、jsp页面等该成一种编码,如utf-8或GBK等,实在不行写一个编码过滤器:以后的页面都万无一失了

下面是一个编码码过滤器:CharacterEncodingFilter



Java code

import java.io.IOException;
import javax.servlet.Filter;
import java……

热点排行