小弟现在在做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.   

    字符编码问题!
    set name gbk;
      

  2.   

    字符集的问题。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  3.   

    conn.prepareStatement("set names gbk;INSERT INTO `offlinemessage` (`ID`) VALUES ('中文')");
      

  4.   

    我将代码改成pstmt = conn.prepareStatement("SET NAMES GBK;INSERT INTO `offlinemessage` (`ID`, `SENDER`, `GETTER`, `TIME`, `CON`) VALUES ('1 2 2222-02-22 22:22:22', '"+1+"', '"+2+"', '2222-02-22 22:22:22', '"+contemp+"')");

    那边提示错误java.sql.SQLException: Unknown system variable 'NAMES'
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:843)
    at com.server.db.DB_Dao.main(DB_Dao.java:223)
      

  5.   

    在my.ini里更改default-character-set=gb2312是可行的~~是不是楼主没有找对安装文件目录啊,我按照这个修改之后就可以了~~