那是字符集不对,字符集对了,肯定没有问题可以在程序中使用类似如下的连接字符串
jdbc:mysql://127.0.0.1/xyz?useUnicode=true&characterEncoding=gbk如果使用命令行或是客户端连接需要对应的使连接为gbk

解决方案 »

  1.   

    嗯,的确是字符集的问题,在以前的帖子里找到点方法,就是在执行其它操作前执行一下
    db->Executes("set charset gb2312;");
    然后再进行其它操作就没有问题了。XqYuan兄,能否给讲一下字符集与DB之间的那种联系啊,到底想让你说什么我也讲不清,
    希望你能明白我的意思,而且我相信这些问题是许多新手都很头痛的问题,且网上的资料
    也不多!
      

  2.   

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

  3.   

    噢,也就是说,向数据库中写入时和读取时用一样的字符集就可以避免乱码吧?
    Q圣兄的办法很管用还有点问题就是 set charset gb2312  与 set names gb2312 有什么不同没有?感谢XqYuan和Q圣兄
    还有什么要补充指点的没有了?有的话请快发
    我的Email: [email protected]
    以后有问题还要多请教你们了!:-)
      

  4.   

    我不知道c是怎么处理的,只知道java的