<!--%@ page language= "java" contentType="text/html;charset=gb2312"%--> 
<%@page pageEncoding="GB2312"%><%@ page info = "这是一个典型的JSP"%>
<%!  
         public  String  getStr(String  str){  
           try{String  temp_p=str;  
           byte[]  temp_t=temp_p.getBytes("gb2312");  
           String  temp=new  String(temp_t);  
           return  temp;  
         }  
         catch(Exception  e){  }  
         return  "NULL";  
         }  
      %>  <%@ page import="java.sql.*"%> <html> <body> <%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:sbzw"; //orcl为你的数据库的SID String user="system"; String password="manager"; Connection conn= DriverManager.getConnection(url,user,password); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String sql="select id,name,birthday,name1 from test"; ResultSet rs=stmt.executeQuery(sql); 
while(rs.next()) {
%> 您的第一个字段内容为:<%=getStr(rs.getString(1))%> 
<br>
您的第二个字段内容为:<%=rs.getString(2)%> 
<br>您的第三个字段内容为:<%=getStr(rs.getString(3))%> 
<br>您的第四个字段内容为:<%=getStr(rs.getString(4))%> 
<br>
<%}%> 
<%out.println("数据库操作成功,恭喜你");%>
 <%rs.close(); stmt.close(); conn.close(); %> </body> </html> 

解决方案 »

  1.   

    cnfalcon(中国猎鹰):   按你说的方法试了,不行
      

  2.   

    是不是中文是乱码,英文正常?
    如果是,将中文字段转换一下编码
    String temp=new String(temp.getBytes("ISO-8859-1"),"GBK");
      

  3.   

    不是乱码,而是ascii码字段值          显示huanglei        0x6875616E676C6569
    黄磊            0xE9BB84E7A38A
      

  4.   

    <!--%@ page language= "java" contentType="text/html;charset=gb2312"%--> 
    <%@page pageEncoding="GB2312"%>-----><%@ page language= "java" contentType="text/html;charset=gb2312"%>
      

  5.   

    搂主,以下这一段应该是注释的意思吧!!!
    <!--%@ page language= "java" contentType="text/html;charset=gb2312"%
    应该改成<%@ page language= "java" contentType="text/html;charset=gb2312"%>
    试一下看噻
      

  6.   

    数据库中读取来的有经过判断再强制转化一下,不能只通过属性设置。
    首先将字符串转化成byte数组,再用iso8890-1转一下,可解决一部分中文不能显示问题。
      

  7.   

    谢谢各位to haroyy(天平) and  raulwang(小狗的强):两位说的问题是我复制粘贴错了,并不是这个问题,谢谢
    to lightEIF(苍鹰)   我用下面函数试过转换为iso8890-1和gb2312都试过,不行<%!  
             public  String  getStr(String  str){  
               try{String  temp_p=str;  
               byte[]  temp_t=temp_p.getBytes("gb2312");  
               String  temp=new  String(temp_t);  
               return  temp;  
             }  
             catch(Exception  e){  }  
             return  "NULL";  
             }  
          %>  
      

  8.   

    各位:我已经解决了问题.是下面一句的问题
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 改成:Statement stmt=conn.createStatement(); 
    就可以了.不知道有哪位知道,这两个参数是什么含义吗?
      

  9.   

    Statement stmt=con.createStatement(int type ,int concurrency);然后,根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集:ResultSet  re=stmt.executeQuery(SQL语句); type的取值决定滚动方式,取值可以是:ResultSet.TYPE_FORWORD_ONLY :结果集的游标只能向下滚动。ResultSet.TYPE_SCROLL_INSENSITIVE :结果集的游标可以上下移动,当数据库变化时,当前结果集不变。ResultSet.TYPE_SCROLL_SENSITIVE :返回可滚动的结果集,当数据库变化时,当前结果集同步改变。Concurrency 取值决定是否可以用结果集更新数据库,Concurrency取值:ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库中的表。ResultSet.CONCUR_UPDATETABLE:能用结果集更新数据库中的表。