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\\
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\\
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$$加了还是不行。
String column = rs.getString("COLUMN_NAME");
System.out.println(new String(column.getBytes( "GBK"), "UTF-8")));
你的数据库使用了gbk编码,后面的参数是需要构造的String的编码方式。其实用new String(column.getBytes(), "UTF-8"))应该就可以了,加那个参数反而降低效率。