回 帖 发 新 帖 刷新版面

主题:JSP读取"数据库"无法显示中文字符

请教一个问题:JSP读取数据库无法显示中文字符

请大家帮我看看问题出在哪儿,下面是代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*" errorPage="" %>
<html>
<body>
以下是从Ms sql server数据库读取的数据:<hr>
<table border=1>
<tr><td>id</td><td>书名</td><td>出版社</td><td>价格</td></tr>
<%! String trans(String chi)
{
               String result = null;
               byte temp [];
               try
               {
                       temp=chi.getBytes("iso-8859-1");
                      result = new String(temp);
                }
                catch(UnsupportedEncodingException e)
                {
                        System.out.println (e.toString());
                }
            return result;
}
%>
<%

   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
   Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:2433;DatabaseName=jspdev","sa","111111");
   Statement stmt=con.createStatement();
    ResultSet rst=stmt.executeQuery("select * from book;");
    while(rst.next())
    {
        out.println("<tr>");
        out.println("<td>"+trans(rst.getString("bookId"))+"</td>");
        out.println("<td>"+trans(rst.getString("bookName"))+"</td>");
        out.println("<td>"+trans(rst.getString("publisher"))+"</td>");
        out.println("<td>"+rst.getFloat("price")+"</td>");
        out.println("</tr>");
    }
    //关闭连接、释放资源
    rst.close();
    stmt.close();
    con.close();
    %>    
</table>
</body>
</html>

显示页面结果是:
id           书名        出版社    价格
001-22-23-1 jsp??????   ???????    59.0

书名应该显示为: JSP应用开发详解

回复列表 (共3个回复)

沙发

从表中提取的数据不需要trans进行转换。一般来说,写入表中的汉字需要进行转换。

板凳

但是我从数据库中提取出来的中文,该怎么显示啊?全是乱码,我没加trans时也是乱码,天哪我该怎么办???[em18][em18]

3 楼

多谢大师指点,我的问题解决了,我把开头的部分修改了一下,就可以了,在此谢谢了!
修改后的代码如下,一切正常!
<%@ page contentType="text/HTML;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<html>
<body>
以下是从Ms sql server数据库读取的数据:<hr>
<table border=1>
<tr><td>id</td><td>书名</td><td>出版社</td><td>价格</td></tr>
<%
   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
   Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:2433;DatabaseName=jspdev","sa","111111");
   Statement stmt=con.createStatement();
    ResultSet rst=stmt.executeQuery("select * from book;");
    while(rst.next())
    {
        out.println("<tr>");
        out.println("<td>"+rst.getString("bookId")+"</td>");
        out.println("<td>"+rst.getString("bookName")+"</td>");
        out.println("<td>"+rst.getString("publisher")+"</td>");
        out.println("<td>"+rst.getFloat("price")+"</td>");
        out.println("</tr>");
    }
    //关闭连接、释放资源
    rst.close();
    stmt.close();
    con.close();
    %>    
</table>
</body>
</html>

我来回复

您尚未登录,请登录后再回复。点此登录或注册