我想用jsp顯示資料表表頭的值?可是顯示出來是亂碼!

askuaile發表於2007-04-09
我想用jsp顯示資料表表頭的值?可是顯示出來是亂碼!
mysql資料庫中儲存的是中文.程式碼如下:
ResultSetMetaData statName= rs.getMetaData();
for(int i=1;i<=statName.getColumnCount();i++){
out.print(statName.getColumnName(i));
}

無論直接輸出還是編碼轉化都是亂碼.資料庫中顯示正常。
new String(str.getBytes("iso-8859-1"),"GB2312");
jsp檔案如下:
<%@ page language="java" import="java.sql.*" contentType="text/html;charset=gb2312"%>

<html>
<head>
<title>My JSP '1.jsp' starting page</title>
</head>

<body>
<%
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String sql="";
String xy="理學院";
String bynf="2006";
request.setCharacterEncoding("gb2312");
//response.setCharacterEncoding("gb2312");

sql="select taizhang2.姓名,taizhang2.身份證 from biyes,taizhang2 where biyes.身份證號=taizhang2.身份證 and 院系所 like '%"+xy+"%'and taizhang2.畢業年份='"+bynf+"'";
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();//載入驅動程式
String url="jdbc:mysql://localhost:3306/dhgl";
con=DriverManager.getConnection(url,"root","root"); //建立連線
System.out.println("資料庫連線成功,準備插入資料......");
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
ResultSetMetaData statName= rs.getMetaData();
//System.out.println(statName.getColumnCount());
response.setCharacterEncoding("gb2312");
for(int j=1;j<=statName.getColumnCount();j++)
{
out.println(statName.getColumnName(j)+"<br/>");
}
}
catch(ClassNotFoundException ce)
{ System.out.println(ce); }
catch(SQLException se)
{ System.out.println(se); }
catch(Exception e)
{ System.out.println(e); }
%>
</body>

相關文章