在最上一行加一条语句,把 s=new String(s.getBytes("ISO-8859-1"),"GBK");去掉不用转换
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>

解决方案 »

  1.   

    谢谢,但是如果用了
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>那么他的输出格式就是text/html不是excle了
    这个可以设置,但是中文还是????
    <%request.setCharacterEncoding("ISO-8859-1");%>
      

  2.   

    to : liad() 
    这种方法试过了
    但是他的'总是显示出来
      

  3.   

    用这试试
    <%@ page contentType="application/vnd.ms-excel; charset=gb2312"%>
    把这
    <%response.setContentType("application/vnd.ms-excel");%>
    <%request.setCharacterEncoding("ISO-8859-1");%>
    也去掉。
      

  4.   

    <%@ page contentType="application/vnd.ms-excel; charset=GBK"%>
    可解决中文问题
    "\b" + getString(i) // \b java特殊字符backspace,折衷的解决方法,你可以使用其它字符试试,如用\udddd泛代码字符
    "\t" 制表符 完整的<%-- mssql2excel.jsp --%>
    <%@ page contentType="application/vnd.ms-excel; charset=GBK"%>
    <%@ page import="java.sql.*" %>
    <%
    String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Hello";
    String user = "sa";
    String password = "liad";
    Class.forName(driver);
    Connection conn = DriverManager.getConnection(url, user, password);
    Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
    String sql = "select * from c2e";
    ResultSet rs = stmt.executeQuery(sql);
    ResultSetMetaData rsmd = rs.getMetaData();
    int numberOfColumns = rsmd.getColumnCount();
    String s = "";
    for (int i = 0; i < numberOfColumns; i++)
    {
    s = s + rsmd.getColumnName(i + 1) + "\t";
    }
    out.println(s);
    while (rs.next())
    {
    s = "";
    for (int i = 0; i < numberOfColumns; i++)
    {
    s = s + "\b" + rs.getString(i + 1) + "\t"; 
    }
    out.println(s);
    }
    rs.close();
    stmt.close();
    conn.close();
    %>