首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

javascript中的中文转换有关问题

2012-01-11 
javascript中的中文转换问题我用JSP做的一个三级联动在从数据库查出来的内容需要用.getBytes( iso-8859-1

javascript中的中文转换问题
我用JSP做的一个三级联动在从数据库查出来的内容需要用.getBytes( "iso-8859-1 "), "gb2312 "转换中文问题,我的程序中的IsoConvertGc就是实现这个功能的,但是我发现这个方法在普通程序中用可以,在javascript中就不起作用,如在这段话中就正确
    <option   value= " <%=IsoConvertGc(rs2.getString( "fenlei "))%> "> <%=IsoConvertGc(rs2.getString( "fenlei "))%> </option> 在javascript中就不可以,哪位高手给我指点指点没,代码如下:
<%!

public   String   IsoConvertGc(String   insert)

{

String   outstr;

try

{

if   (insert   ==   null   ||   insert.trim().length()   ==   0)

{

return   insert;

}

outstr   =   new   String(insert.getBytes( "iso-8859-1 "), "gb2312 ");

}

catch   (Exception   e)

{

outstr   =   null;

}

return   outstr;

}

%>
<body   onload= "initialSelect(); ">
<%   Connection   con;
Statement   stmt;Statement   stmt1;Statement   stmt2;
String   hostName               =   "61.32.251.131 ";

        String   portNumber           =   "1521 ";

        String   databaseSID         =   "ora9i ";  
           
            //数据库登录用户和密码
            String   user= "fhsr ";
            String   password= "iltutilu ";
            Class.forName( "oracle.jdbc.driver.OracleDriver ");
            String   url= "jdbc:oracle:thin:@ "+hostName+ ": "+portNumber+ ": "+databaseSID;

            stmt=con.createStatement();   stmt1=con.createStatement();stmt2=con.createStatement();
    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+ " '   ";
    %>
    <script   language= "javascript ">
    var   DeparmentCount;   //三级联动菜单代码
    DeparmentCount   =   0;
    var   DivisionCount;
    DivisionCount   =   0;
    var   SpecialityCount;
    SpecialityCount   =   0
    Department   =   new   Array();
    Division   =   new   Array();
    Speciality   =   new   Array();
<%
 
    int   i=0;
    for(rs.next();!rs.isAfterLast();rs.next(),i++){%>
      Division[ <%=i%> ]   =   new   Array( " <%=IsoConvertGc(rs.getString( "Division_name "))%> ", " <%=IsoConvertGc(rs.getString( "department_id "))%> ");


<%     }%>
    DivisionCount   =   <%=i%> ;

<%
    System.out.println( "debug....1 ");
   
    i=0;
    for(rs1.next();!rs1.isAfterLast();rs1.next(),i++){%>
      Speciality[ <%=i%> ]   =   new   Array( " <%=IsoConvertGc(rs1.getString( "Speciality_name "))%> ", " <%=IsoConvertGc(rs1.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>


[解决办法]
普通程序中用可以,在javascript中就不起作用

JAVASCRIPT中的任何语句都不可能调用JAVA程序语句.因为后者是在前者在服务端执行完毕,传到客户端后才执行的.
[解决办法]
lz将jsp文件用utf-8格式保存并采用utf-8定义编码试试:
<%@ page language= "java " import= "java.util.* " pageEncoding= "utf-8 "%>
[解决办法]
JS中是不能运行JAVA语句的,当然转码失败。
如果LZ不想将JSP定为UTF-8编码,一定要用自己的这种方式的话,
建议使用AJAX,在后台转好了再返回给JS。
------解决方案--------------------


lz的问题不是js而是页面编码的问题.
<%@ page language= "java " import= "java.util.* " pageEncoding= "utf-8 "%>
通过它将页面编码转化.
[解决办法]
在js中用 encodeURI(url);
encodeURI 方法
将文本字符串编码为一个有效的统一资源标识符 (URI)。

encodeURI(URIString)

必选的 URIString 参数代表一个已编码的 URI。

说明
encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码: ": "、 "/ "、 "; " 和 "? "。请使用 encodeURIComponent 方法对这些字符进行编码。


[解决办法]
peciality[ <%=i%> ] = new Array( " <%=rs1.getString( "Speciality_name ").getBytes( "ISO-8859-1 "), "GBK "%> ", " <%=rs1.getString( "division_id ").getBytes( "ISO-8859-1 "), "GBK "%> ");
这句话哪错了呢?
这样报错的
symbol : method print (byte[],java.lang.String)
location: class javax.servlet.jsp.JspWriter
out.print(rs.getString( "Division_name ").getBytes( "ISO-8859-1 "), "GBK ");

--------------------------------------

没有这样的方法:print(bytes[],string)
试试这样:

peciality[ <%=i%> ] = new Array( " <%=new String(rs1.getString( "Speciality_name ").getBytes( "ISO-8859-1 "), "GBK ")%> ", " <%=new String(rs1.getString( "division_id ").getBytes( "ISO-8859-1 "), "GBK ")%> ");


[解决办法]
不是,〈%%〉中可以是任何合法的java语句,
如果还是乱码,在该页面的最前面加一行:
<%@ page contentType= "text/html;charset=GBK "%>

[解决办法]
标准的写法是:str2=new String(str1.getBytes( "iso8859-1 "), "gb2312 ");
[解决办法]
你要看看数据库中使用的是什么编码,确信是iso 8859-1吗?
[解决办法]
代码够乱的,看起来都晕,把js放到单独文件中 <%@ page contentType= "text/javascript;charset=gb2312 " language= "java " %>

主文件
<%@ page language= "java " contentType= "text/html;charset=gb2312 " pageEncoding= "gb2312 %>

字符串不用转换直接输出来看看
数据库的操作最好放到Dao文件中封装

热点排行