MYSQL安装时已选择编码为gb2312,在mysql目录中的my.ini文件.客户端和服务器端两个编码设置均已设置为gb2312.  在建的库和表时也选择编码为gb2312.
  问题是,用vb从库中读内容时,汉字部份都是乱码,几个汉字就有几个乱码.
  写库的时候,如果写英文,则正常,如果写汉字,则提示"data to long for column 'name' at row 1"   (我向user表中name字段写汉字)
  请老师给予回答,解决马上给分.

解决方案 »

  1.   

    好象是connection有个autotranslate属性,你把这个属性改成false试一下
      

  2.   

    在my.ini里找到
    sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
    把其中的
    STRICT_TRANS_TABLES,
    去掉,然后重启mysql就ok了
      

  3.   

    2楼,conn与rs都没找到autotranslate这个属性.
    3楼,按你的办法,去掉了STRICT_TRANS_TABLES,然后停止mysql服务又重启,再又重启机器,问题依旧.
     请高手继续解答
      

  4.   

    那你用odbc吗?
    就是控制面板里面那个数据源(ODBC)
    新建dsn的时候
    在完成画面那里先不要点完成:有个“执行字符数据翻译”选项
    就是上面说的autotranslate
    connection的这个属性在对象里面没有
    可以在connectionstring中设置,就加上一条autotranslate=false就可以
      

  5.   

    我是用了odbc. 在新建dsn的时候,选择新建mysql数据源,没有看到"执行字符数据翻译"选项,因为选择建mysql数据源的时候,弹出窗口是英文的,应该是mysql connector odbc的弹出项.
      autotranslate=false具体怎么加,可以给出两句代码吗?
    不管如何,先谢谢
      

  6.   

    插入的汉字一般都是gb2312,而数据保存的是iso-8859-1。所以会出现乱码现象。
    方法:读数据时用: 
    str = new String(“邓明”.getBytes(“GB2312”),”iso-8859-1”) 
    插入时用 
    str = new String(“邓明”.getBytes(“iso-8859-1”),”GB2312”)我也是在网上帮你G的,不知道对不对,你可以试试。还有,是不是你的数据库驱动版本低了
      

  7.   

    楼上的朋友,可以把你查的网址给我吗? 你语句中"邓明".gebytes()  还是"邓明",getbytes()
    ?
      

  8.   

    csdn上的高手呢? 来帮忙解决一下,分不够我再开贴.只求解决问题倾家荡产也要解决问题为先,高手请帮忙
      

  9.   

    在打开与MySQL数据库的连接之后, 执行一下下面的SQL语句:
    SET NAMES 'GBK'
    然后就能正常读写中文字段了。
      

  10.   

    复:jadeluo(秀峰) 
      按你的说法,我打开mysql dos方法.执行了"set names 'GBK'" 然后执行我的查看数据库代码,汉字方法仍然是"?"
      

  11.   

    mysql dos方法, 你是指用某个MySQL的客户端?
    在你的代码中完成这条语句试试。
      

  12.   

    谢谢秀峰,你的方法可以.我昨天急晕了set names 'gbk'放至mysql的dos环境中去执行了.谢谢你
      

  13.   

    先确定服务器是GB2312编码,然后在VB的数据库连接字符串且加上  Stmt=Set Names 'GBK'
    如:Provider=MSDASQL.1;Persist Security Info=False;Data Source=MYODBC;Stmt=Set Names 'GBK'
      

  14.   

    strConnect = "dsn=strCon;uid=sss;pwd=sss;Stmt=Set Names 'latin1'"
    strConnect = "dsn=strCon;uid=sss;pwd=sss;Stmt=Set Names 'GBK'"
    我的VB是用ODBC连的Mysql,但用了上面的语句,读取的Mysql中的中文数值还是'??'
    改了几种都不行,还有可能是什么原因???
      

  15.   

    我的是提示是“类型不匹配”,
    屏蔽后再运行又报“was generated by MSRDO.DLL 不是当前行”