我用的是Mysql5.0;
   用Delphi6.0+ADO+Mysql5.0_ODBC读取数据库中数据,但是汉字读都是“??”
或者乱码;
   在网上找了好多关于my sql的字符集的资料,按照网上的方法设置试了n次还是不行,请高手帮助解决!谢谢!

解决方案 »

  1.   

    可以按照默认的UTF-8读出来,再转换,或者改字符集为GB2312/GBK
      

  2.   

    现在没有乱码了,但中文只能查到一半我在网上找到一些说明,做如下测试;
    建表
        create table w1(c1 varchar(64) character set utf8);
    插入记录
        insert w1 values('中文测度');
        insert w1 values('中文字符测度');查询记录
        select * from w1;结果是
       c1
      ------------
       中文
       中文字只有一半中文,不知为什么?好像是mysql中一个字符中2个字节,4个汉字被认为4个字符,长度为4,传到ADO时被认为4个字节,就被截去一半;
    各位谁能帮助解决一下!
      

  3.   

    MYSQL 的一个中文字符是两个字节的,4个汉字被认为8个字符你在查询之前一定得 set names utf8;
    保持所有终端编码一致。要不然就截断字符或者出现不可预期的后果。
      

  4.   

    我试过了,加set names utf8,结果和上面的一样
    如果加 set names gbk,结果是一串"?"!
      

  5.   

    刚才我又这一试了一下,在ODBC中建数据源,
    用MS SQL2000 的“导入和导出数据”工具,将mysql数据库中表w1导出,
    发现竟然结果表中汉字也是被截去了一半,这是为什么啊?
      

  6.   

    这样试一下:
            myado1.SQL.Clear;
            myado1.SQL.Append('set names GB2312');
            myado1.ExecSQL;
    然后再:
    myado1.sql.clear;
    myado1.sql.text:=sql语句
    myado1.open