小弟现在在做java连接mysql的,mysql用的4.0,用 heidisql管理sql数据,jdbc用的是5.05,现在用java存入mysql,数据库里中文显示总是???,写sql语句在conn.prepareStatement("INSERT INTO `offlinemessage` (`ID`) VALUES ('中文')");是可以正常显示
但是如果写成String temp="中文";
temp=new String(contemp.getBytes("ISO-8859-1"),"GB2312");
conn.prepareStatement("INSERT INTO `offlinemessage` (`ID`) VALUES ('"+temp+"')");数据库里就会显示???.
网上找了不少方法都没有效果
比如在my.ini里添加default-character-set=gb2312,但是我的mysql安装文件夹下没有my.ini,在c:\windows下找到my.ini,我在那里修改的 但是没有效果,表重新建立过还是不行求各位大神指导啊,有图教导更好

解决方案 »

  1.   

    去掉temp=new String(temp.getBytes("ISO-8859-1"),"GB2312");
    你要这样不用插mysql,控制台也出不了中文
      

  2.   

    问题很明显,是mysql数据库编码与gb2312编码不一致。
    temp=new String(contemp.getBytes("ISO-8859-1"),"GB2312");你之所以这样转,是因为jsp传入的中文本身是西文,也就是ISO-8859-1,传入进来后已经乱码了,你用这个转成gb2312好了,正常了,不乱码了,但是因为mysql数据库编码可能不是gb2312,这样插入mysql就会乱码。建议最好将所有编码都设置为UTF-8,jsp,java工程,mysql数据库,连接mysql的连接串,都给成UTF-8,你试试看,另外,修改mysql的my.ini之后,要重新启动mysql服务器才生效。
      

  3.   

    数据库编码与页面编码不一致。建议都设置成UTF-8
      

  4.   

    假设你的mysql用的是gb2312然后你用java打开数据库的时候填的url应该为
    jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=gb2312数据库名自己改之后你不转化字符串就能正常显示了
      

  5.   

    直接修改该mysql的my.ini配置文件,配置成默认为gbk