把存入数据库的汉字进行转换。
new String("汉字".getBytes("ISO8859-1"),"GB2312");

解决方案 »

  1.   

    这是系统的问题。unix的编码是iso-8859-1吧。
    你看看jdbc驱动有没有变化?
      

  2.   

    我在windows2000与unix下用的jdbc驱动都是同一个classes12.zip。有何办法解决呢?
      

  3.   

    没有再UNIX下试过,但记得JDBC驱动在UNIX,LINUX下推荐的是CLASSES111.ZIP包的,不知道有用没:)
      

  4.   

    1. public String GBK2UNI(String s)
    throws UnsupportedEncodingException  
    {
    String temp=s;
    temp=new String(s.getBytes("GBK"),"ISO8859_1");
      return temp;
    }
    //将GKB转换为Unicode的代码
    2. public String UNI2GBK(String s)
    throws UnsupportedEncodingException
      {
     String temp=s;
     temp=new String(s.getBytes("ISO8859_1"),"GBK");
     return temp;
    }
    //将Unicode转换为GKB的代码
    上述两个函数都是用来解决Java中文显示问题的
    Java的Java和Javac这两个命令在编译和运行Java程序时会检测系统字符集,然后按照系统字符集来对字符进行转换。例如:当在西文系统中运行Javac命令时,它所选用的encode的字符就是ISO8859_1,也就是说,它在编译时会见所有的ISO8859_1的字符串转换成Unicode,此时如果程序中有其他字符集的字符串,比如GKB的中文字串,则不做任何转换,仍然按照GKB的字符读入,而当它在西文平台下用Java运行时,又会将Unicode转换成ISO8859_1输出,并将GKB的字符正常输出。因此,在西文环境下,中文可以正常的输出。如果在中文系统中运行javac命令,则所有的GKB字符串会转换成Unicode,而所有的ISO8859_1的字符串会保留,同样在输出的时候也将Unicode转换GKB字符集,因此也可以正常显示。
    那什么时候会出现中文乱码问题呢?在JDBC Driver里,有些Driver会对从数据库中读出的中文自动地转换成Unicode,而有些不会,如果Driver做过转化而系统又再做一次的话,就会出现问题,也就是常常见的??,这时,需要的就是在不同的平台下根据不同的情况去将数据库做得不需要的转换抵消。举个简单的例子,系统是西文平台,数据库的Driver做过GKB到Unicode的转换,这时候,程序中的中文字串在javac后仍然是GKB码,而从数据库中读进的中文已经做过转换,也就是变成了Unicode码,当用java去运行时就会将中文的Unicode转换到ISO8859_1,自然要出错。这时,就需要自己将从数据库重读出的数据做一个Unicode到GKB的转换,因此就可以正常输出了。所有的Java中文问题,都是因为这个原因,对于乱码的字符串,或者做Unicode到GKB,或者做GKB到Unicode,就可以正常显示了。
      

  5.   

    对了
    还得事先到入包
    <%@page import="java.io.*"%>
      

  6.   

    那就是操作系统的问题,你还是用iso-8859-1转码吧。
      

  7.   

    大哥们,怎么用iso-8859-1转码啊?
      

  8.   

    我用了WebLogic6.1,结果一通过网络访问jsp就不能正常显示中文?
    是怎么回事呢?