首先你的数据库字符集全部为GBK,可以用show variables like "%char%";来查看.
然后,读数据出来的时候加上useUnicode=true
即:String dburl="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=GBK";
试试看行不行,不行的话你就再转一次编码好了
String str=new (String)(str.getBytes("ISO-8859-1"),"GBK");

解决方案 »

  1.   

    其实我们可以这样理解,如果要在mysql数据库中存储和读取中文,则需要mysql服务器,客户端都采用的是支持中文的字符集,这在很多安装mysql的时候可以指定,也可以通过配置my.ini来更改;
    但是还有一点大家总是容易忽略,如果用编程语言来连接mysql的数据库,其连接也需要采用支持中文的字符集,如果使用的是odbc连接,则不管是vc连接还是其他脚本语言进行连接,都需要在odbc连接字符串中指定使用的中文字符集;
    例如,以最新的mysql-connector-odbc-3.51.12驱动来说,在配置odbc连接的时候,在connection option选项卡的Initial Statement参数处就可以配置为SET NAMES GB2312,这样,通过此odbc连接访问该数据库,写入和读取中文都不会有问题
    对于Eclipse3.1也是同样的道理
      

  2.   

    CREATE DATABASE U_R_database_name DEFAULT CHARACTER SET utf8;CREATE TABLE U_R_table_name(
    ...
    )
    DEFAULT CHARACTER SET utf8;
    ----------------------------------------------
    connection_url: 
    jdbc:mysql://host_name:3306/[database_name]?useUnicode=true&characterEncoding=utf8
      

  3.   

    各位不好意思,长时间没有上CSDN了。我的问题最后是通过在代码中转码实现的,就是hy2003fly() 的方法。虽然用了hibernate,但是失去了可移植性,唉。
    现在就发分给大家。QSHENG(Q圣) 的方法,我没有试过,不过值得尝试一下。