现在在做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,我在那里修改的 但是没有效果,表重新建立过还是不行
去掉temp=new String(temp.getBytes("ISO-8859-1"),"GB2312");
你要这样不用插mysql,控制台也出不了中文
问题很明显,是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服务器才生效。
直接修改该mysql的my.ini配置文件,配置成默认为gbk