String str=rs.getString("taskid"); 
String temp = new String(str.getBytes("ISO8859_1"),"gb2312" );out.print("<td width='20%'><font  size='3'>" + temp+ "</td>");

解决方案 »

  1.   

    从数据库中取出的字符型数据要做强制转换
    .String(iso.getBytes("ISO8859_1"),"GB2312");
      

  2.   

    从数据库中取出的字符型数据要做强制转换
    .String(iso.getBytes("ISO8859_1"),"GB2312");
    记住,所有的编码,最好保持一致,或者兼容
      

  3.   

    谢谢各位,但是不行呀...
    加了<%@ page contentType="text/html;charset=gb2312" %>这句话,数据库中取出的数据即便不进行强制转换也能正常显示,但是直接写在页面上的字符串就显示乱码(IE的编码方式为gb2313);
    而如果不加<%@ page contentType="text/html;charset=gb2312" %>这句话(IE的编码方式为UTF-8),情况正好相反!从数据库中取出的数据即便按String(iso.getBytes("ISO8859_1"),"GB2312")进行强制转换也不行.
    我环境为XP,tomcat,SQL SERVER2000。
    救命呀...
      

  4.   

    <%@page contentType="text/html;charset=gb2312"%>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    然后要显示在页面或提交到数据库的数据用:
    lbID = new String((request.getParameter("lbID")).getBytes("8859_1"));
    这种形式就可以了。
    从数据库读出来的数据就不用转了。
      

  5.   

    找到原因了!
    我开始是在EmEditor里面写的代码,结果EmEditor的汉字编码有问题,相同的程序拷贝到写字板里面汉字就已经变成乱码了,在写字板里面重新改为正常的汉字,就OK了。
    谢谢大家帮忙