mysql与jsp一起使用时的中文乱码解决
开发环境:win7; mysql-5.0.51b; ObjectWeb Lomboz for JavaEE Development Version: 3.3;
今天在尝试进行连接数据库并读取数据的时候出现了著名的中文乱码
但是由于在以前的ajax过程中有过教训,所以在能设置编码的地方都设置了UTF-8,但竟然也出现了问题。
我的jsp页面代码如下:
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Hello world!</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<body>
<%
java.sql.Connection conn;
String strConn;
java.sql.Statement sqlStmt;
java.sql.ResultSet sqlRst;
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn=DriverManager.getConnection("jdbc:mysql://localhost/j2ee","root","admin");
sqlStmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String sqlQuery="select * from USER";
sqlRst=sqlStmt.executeQuery(sqlQuery);
if(sqlRst!=null){
%>
<center>用户信息</center>
<table>
<tr><td>用户ID</td><td>用户名字</td></tr>
<%
while(sqlRst.next()){
%>
<tr><td><%=sqlRst.getString("U_ID")%></td><td><%=sqlRst.getString("USER_NAME")%></td></tr>
<%
}
}
sqlRst.close();
sqlStmt.close();
}catch(java.sql.SQLException ex)
{
response.getWriter().println(ex.toString());
}
finally
{
}
%>
</table>
</body>
</html>
我设置了页面的编码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,以及eclipse的编码,mysql的编码,全部设置成了utf-8;
问题仍然存在。
最终在页面头加入<%@page contentType="text/html; charset=UTF-8" language="java"%>
问题解决。得出结论,页面的java代码貌似也需要设置一下。
难道这与eclipse的编码是两回事?还是这影响之后产生的servlet的编码?
今天在尝试进行连接数据库并读取数据的时候出现了著名的中文乱码
但是由于在以前的ajax过程中有过教训,所以在能设置编码的地方都设置了UTF-8,但竟然也出现了问题。
我的jsp页面代码如下:
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Hello world!</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<body>
<%
java.sql.Connection conn;
String strConn;
java.sql.Statement sqlStmt;
java.sql.ResultSet sqlRst;
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn=DriverManager.getConnection("jdbc:mysql://localhost/j2ee","root","admin");
sqlStmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String sqlQuery="select * from USER";
sqlRst=sqlStmt.executeQuery(sqlQuery);
if(sqlRst!=null){
%>
<center>用户信息</center>
<table>
<tr><td>用户ID</td><td>用户名字</td></tr>
<%
while(sqlRst.next()){
%>
<tr><td><%=sqlRst.getString("U_ID")%></td><td><%=sqlRst.getString("USER_NAME")%></td></tr>
<%
}
}
sqlRst.close();
sqlStmt.close();
}catch(java.sql.SQLException ex)
{
response.getWriter().println(ex.toString());
}
finally
{
}
%>
</table>
</body>
</html>
我设置了页面的编码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,以及eclipse的编码,mysql的编码,全部设置成了utf-8;
问题仍然存在。
最终在页面头加入<%@page contentType="text/html; charset=UTF-8" language="java"%>
问题解决。得出结论,页面的java代码貌似也需要设置一下。
难道这与eclipse的编码是两回事?还是这影响之后产生的servlet的编码?