
jsp页面显示不出mysql中查询出的中文字符串,插入中文也不好使
用Eclipse编写的jsp页面,连接的是mysql数据库。英文和数字都能正常显示,中文就显示不了。<%@pagecontentType="text/html;chars...
用Eclipse编写的jsp页面,连接的是mysql数据库。英文和数字都能正常显示,中文就显示不了。
<%@page contentType="text/html;charset=UTF-8"import="java.sql.*"%>
<html>
<title>用户注册</title>
<body>
<%
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
request.setCharacterEncoding("UTF-8");
String no=request.getParameter("no");
String name=request.getParameter("name");
String age=request.getParameter("age");
String email=request.getParameter("email");
String tel=request.getParameter("tel");
%>
<h4>您提交的内容如下</h4>
no:<%=no%><br/>
name:<%=name%><br/>
age:<%=age%><br/>
email:<%=email%><br/>
tel:<%=tel%><br/>
<h4>使用jdbc将用户注册信息保存到数据库中</h4>
<%
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/hello?user=root&password=12345&useUnicode=true&characterEncoding=GB2312");
stmt=con.createStatement();
String upd="INSERT INTO people(no,name,age,email,tel)"+"values('"+no+"','"+name+"','"+age+"','"+email+"','"+tel+"')";
//out.println(upd);
stmt.executeUpdate(upd);
String query="select * from people";
rs=stmt.executeQuery(query);
%>
<h4>从people中取出所以数据</h4>
<table border="1">
<tr>
<th>号码</th>
<th>姓名</th>
<th>年龄</th>
<th>email</th>
<th>电话</th>
</tr>
<%
while(rs.next()){
out.println("<tr>");
out.println("<td>"+rs.getString("no")+"</td>");
out.println("<td>"+rs.getString("name")+"</td>");
out.println("<td>"+rs.getString("age")+"</td>");
out.println("<td>"+rs.getString("email")+"</td>");
out.println("<td>"+rs.getString("tel")+"</td>");
out.println("</tr>");
}
}catch(SQLException sqle)
{out.println("sqle="+sqle);}
finally {try{rs.close();
stmt.close();
if(con!=null)con.close();
}
catch(SQLException sqle){out.println("sqle="+sqle);}
}
%>
</table>
</body>
</html>
若插入no=4,name=啊,age=3,email=3,tel=3则不能正常显示
即使提交的页面和数据库使用的是都是UTF-8也无法正常显示,字符以两个?的方式显示出来,怎么弄啊?帮帮忙吧! 展开
<%@page contentType="text/html;charset=UTF-8"import="java.sql.*"%>
<html>
<title>用户注册</title>
<body>
<%
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
request.setCharacterEncoding("UTF-8");
String no=request.getParameter("no");
String name=request.getParameter("name");
String age=request.getParameter("age");
String email=request.getParameter("email");
String tel=request.getParameter("tel");
%>
<h4>您提交的内容如下</h4>
no:<%=no%><br/>
name:<%=name%><br/>
age:<%=age%><br/>
email:<%=email%><br/>
tel:<%=tel%><br/>
<h4>使用jdbc将用户注册信息保存到数据库中</h4>
<%
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/hello?user=root&password=12345&useUnicode=true&characterEncoding=GB2312");
stmt=con.createStatement();
String upd="INSERT INTO people(no,name,age,email,tel)"+"values('"+no+"','"+name+"','"+age+"','"+email+"','"+tel+"')";
//out.println(upd);
stmt.executeUpdate(upd);
String query="select * from people";
rs=stmt.executeQuery(query);
%>
<h4>从people中取出所以数据</h4>
<table border="1">
<tr>
<th>号码</th>
<th>姓名</th>
<th>年龄</th>
<th>email</th>
<th>电话</th>
</tr>
<%
while(rs.next()){
out.println("<tr>");
out.println("<td>"+rs.getString("no")+"</td>");
out.println("<td>"+rs.getString("name")+"</td>");
out.println("<td>"+rs.getString("age")+"</td>");
out.println("<td>"+rs.getString("email")+"</td>");
out.println("<td>"+rs.getString("tel")+"</td>");
out.println("</tr>");
}
}catch(SQLException sqle)
{out.println("sqle="+sqle);}
finally {try{rs.close();
stmt.close();
if(con!=null)con.close();
}
catch(SQLException sqle){out.println("sqle="+sqle);}
}
%>
</table>
</body>
</html>
若插入no=4,name=啊,age=3,email=3,tel=3则不能正常显示
即使提交的页面和数据库使用的是都是UTF-8也无法正常显示,字符以两个?的方式显示出来,怎么弄啊?帮帮忙吧! 展开
3个回答
展开全部
中文编码的问题,你提交的是UTF-8,数据库使的是gb2312,当然有问题了,改成一致就好了。不过我推荐你写个过滤器去过滤它,很简单的,我就不给你代码了,自己写才能加深记忆。
展开全部
明显编码问题啊 统一编码 认定这个项目有什么编码 所有地方都要统一
<%@page contentType="text/html;charset=UTF-8"import="java.sql.*"%>
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/hello?user=root&password=12345&useUnicode=true&characterEncoding=GB2312");
<%@page contentType="text/html;charset=UTF-8"import="java.sql.*"%>
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/hello?user=root&password=12345&useUnicode=true&characterEncoding=GB2312");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是因为你mysql的字符编码设置的问题,在mysql中执行下面的语句就可以了
执行语句:mysql> alter table tablenames modify 字段名 char(20) character set gbk;就可以了
执行语句:mysql> alter table tablenames modify 字段名 char(20) character set gbk;就可以了
参考资料: http://zhidao.baidu.com/question/90128061.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询