我从网上找的、一个用 javascript实现的三级联动的程序,其中连数据库部分被封装了,没有给提供,如果是我引用jsp中的连数据库程序,在javascript中的rs.getString所取内容遇到了无法转换编码的中文问题,哪位高手帮我写下system.pub.oraclesql myDao = new system.pub.oraclesql();用到的system.pub包,并且他应该放在什么位置呢?或者是帮我把关于数据库的rs.getString写在javascript外边,这样就可以转换编码了:
代码如下:
<script language="javascript">
  var DeparmentCount; //三级联动菜单代码
  DeparmentCount = 0;
  var DivisionCount;
  DivisionCount = 0;
  var SpecialityCount;
  SpecialityCount = 0
  Department = new Array();
  Division = new Array();
  Speciality = new Array();
<% system.pub.oraclesql myDao = new system.pub.oraclesql();
  ResultSet rs = myDao.execQuery("select * from division");
 
  int i=0;
  for(rs.next();!rs.isAfterLast();rs.next(),i++){%>
   Division[<%=i%>] = new Array("<%=rs.getString("Division_name")%>","<%=rs.getString("department_id")%>");
<%  }%>
  DivisionCount = <%=i%>;<%
  System.out.println("debug....1");
  rs = myDao.execQuery("select * from speciality");
  i=0;
  for(rs.next();!rs.isAfterLast();rs.next(),i++){%>
   Speciality[<%=i%>] = new Array("<%=rs.getString("Speciality_name")%>","<%=rs.getString("division_id")%>");<%  }%>
  SpecialityCount = <%=i%>;
   
   
function changeDepartment(DepartmentId){
 document.form1.Switch.value="false";
 document.form1.division.length = 0;
     var DepartmentId = DepartmentId;
     var i;
     for (i=0;i < DivisionCount; i++){
         if (Division[i][1] == DepartmentId){ 
       document.form1.division.options[document.form1.division.length] = new Option(Division[i][0], Division[i][0]);
             }        
        }
       changeDivision(document.form1.division.value);
}function changeDivision(DivisionId){
 document.form1.Switch.value="false";
    document.form1.speciality.length = 0;
 var DivisionId = DivisionId;
    var i;
    for (i=0;i < SpecialityCount; i++){
 if (Speciality[i][1] == DivisionId){ 
          document.form1.speciality.options[document.form1.speciality.length] = new Option(Speciality[i][0], Speciality[i][0]);
        }        
 }
 if(document.form1.speciality.length!=0){
  document.form1.speciality.style.visibility = 'visible';
 }
 else{  
  document.form1.speciality.style.visibility = 'hidden';
 }
}function  initialSelect(){
changeDepartment(document.form1.department.options[document.form1.department.selectedIndex].value);
}
</script>

解决方案 »

  1.   

    是否指定contentType 的charset 和 pageEncoding?
      

  2.   

    我不太懂,但是在javascript中好像不可以转换数据库中所查内容的编码
      

  3.   

    谁帮我看看有
    我想把数据库语句写在javascript外面,看这样改哪错了,这是主要部分代码
      ResultSet rs = stmt.executeQuery("select distinct * from division");
      ResultSet  rs1 = stmt1.executeQuery("select distinct * from speciality");
      //String sql = "select * from wupinbiao where leixing='"+leixing+"' and tiaoma='"+tiaoma+"' and xinghao='"+xinghao+"' ";
      %>
        <%
      request.setCharacterEncoding("gb2312");
      while( rs.next()){ 
      String Division_name=IsoConvertGc(rs.getString("Division_name"));
      String department_id=IsoConvertGc(rs.getString("department_id")); 
     }%>
      <meta http-equiv="Content-Type" content="text/html;  charset=gb2312">
    <script language="JavaScript">
      var DeparmentCount; //三级联动菜单代码
      DeparmentCount = 0;
      var DivisionCount;
      DivisionCount = 0;
      var SpecialityCount;
      SpecialityCount = 0
      Department = new Array();
      Division = new Array();
      Speciality = new Array();
    <%
     
      
      for (int i=0;i<7;i++){
       Division[<%=i%>] = new Array("+Division_name","+department_id");
    }
      DivisionCount = <%=i%>;