乱码不是数据库的问题,跟classes.jar估计也没关系,跟你的java应用服务器字符集设置有关。你使用的是什么应用服务器?Tomcat、Resin、Weblogic其他的什么?如果不清楚怎么设置应用服务器的字符集,用以下的字符集转换方法在Java代码里尝试转换一下:  public static String getString(String str) {
    if (iStringConvert != 0) {
      try {
        sun.io.ByteToCharISO8859_1 tt = new sun.io.ByteToCharISO8859_1();
        str = new String(tt.convertAll(str.getBytes()));
        return str;
      }
      catch (Exception ex) {
        System.out.println(ex.getMessage());
      }
    }
    return str;
  }  public static String getString8859(String str) {
    if (iStringConvert != 0) {
      try {
        String temp_p = str;
        byte[] temp_t = temp_p.getBytes("ISO8859_1");
        String temp = new String(temp_t);
        return temp;
      }
      catch (Exception e) {
        System.out.println(e.toString());
        str = "";
      }
    }    return str;
  }  public static String getGBKBy8859(String str) {
    if (iStringConvert != 0) {
      try {
        String temp_p = str;
        byte[] temp_t = temp_p.getBytes("ISO8859_1");
        String temp = new String(temp_t, "GB2312");
        return temp;
      }
      catch (Exception e) {
        System.out.println(e.toString());
        str = "";
      }
    }    return str;
  }  public static String get8859ByGBK(String str) {
    if (iStringConvert != 0) {
      try {
        String temp_p = str;
        byte[] temp_t = temp_p.getBytes("GB2312");
        String temp = new String(temp_t, "ISO8859_1");
        return temp;
      }
      catch (Exception e) {
        System.out.println(e.toString());
        str = "";
      }
    }    return str;
  }  public static String getGB2312By8859(String str) {
    if (iStringConvert != 0) {
      try {
        String temp_p = str;
        byte[] temp_t = temp_p.getBytes("ISO8859_1");
        String temp = new String(temp_t, "GB2312");
        return temp;
      }
      catch (Exception e) {
        System.out.println(e.toString());
        str = "";
      }
    }
    return str;
  }  public static String getStringUTF8(String str) {
    if (iStringConvert != 0) {
      try {
        String temp_p = str;
        byte[] temp_t = temp_p.getBytes("UTF-8");
        String strRet = "";
        for (int i = 0; i < temp_p.length(); i++) {
          strRet += ("%" + Integer.toHexString(temp_t[i]));
        }
        return strRet;
      }
      catch (Exception e) {
        System.out.println(e.toString());
        str = "";
      }
    }
    return str;
  }