rsmd.getColumnName()获得字段列名变乱码已经在代码中使用了rsmd.getColumnName(i).getBytes( "ISO-8859-1"), "GBK");还是乱码。
show variables like 'ch%';character_set_client gbk
character_set_connection gbk
character_set_database gbk
character_set_results gbk
character_set_server gbk
character_set_system utf8
character_sets_dir D:\\Java develop Util\\MySQL\\MySQL Server 5.0\\share\\charsets\\

解决方案 »

  1.   

    先在程序中执行一下 "set name 'gbk'" 
      

  2.   

    name是不是字段名Unknown system variable 'name'
      

  3.   

    少了一个s,是set names gbk;
      

  4.   

    DELIMITER $$;DROP PROCEDURE IF EXISTS `newspaper`.`getList`$$CREATE PROCEDURE `getList`(pdate varchar(20))
    BEGIN
    SET @EE=''; 
    set names gbk;
    SELECT @EE:=CONCAT(@EE,'sum(IF(p_name=\'',p_name,'\'',',amount,0)) AS `',p_name,'`,') FROM (SELECT DISTINCT p_name FROM history_number where pdate='2010-01-25' order by p_orderNo) A; 
    SET @QQ=CONCAT('SELECT ifnull(u_name,\'total\') as USER,',@EE,'sum(amount) AS TOTAL FROM history_number where pdate=\'2010-01-25\' GROUP BY u_name WITH ROLLUP');
    PREPARE stmt2 FROM @QQ;
     EXECUTE stmt2;
    END$$加了还是不行。
      

  5.   


    String column = rs.getString("COLUMN_NAME");
    System.out.println(new String(column.getBytes( "GBK"), "UTF-8")));
      

  6.   

    关键就在new String(column.getBytes( "GBK"), "UTF-8"))这个方法啊,
    你的数据库使用了gbk编码,后面的参数是需要构造的String的编码方式。其实用new String(column.getBytes(), "UTF-8"))应该就可以了,加那个参数反而降低效率。
      

  7.   

    getColumnName()时其中字段名的最后一个字为乱码?? 
      

  8.   

    很奇怪,我曾经用set name gbk;试过不行。刚才又试了一下,就解决了乱码问题