我用delphi6+myadc连接数据库,数据库中有的数据是Jördis,可查询出来后却是乱码,请教怎么解决?

解决方案 »

  1.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   


    我的不是中文,我的数据库版本是5.1,字符集是utf8,数据库中存放度不是中文是外语,包含非英语如,Jördis等人名,我用第三方控件,类似ado,且也将字符集设置为utf8,当我查询出来后,就显示乱码。我看了你推荐的网站,好像没有我这种情况。请指教!
      

  3.   

    先set nams utf8;
    seelct .....
      

  4.   

    我是这样写sql语句的:SQLstr:='set names ''utf8'';select * from t_user';
    mySQLQry.sql.Text:= SQLstr;
    mySQLQry.open;查出来就是乱码。
      

  5.   

    http://hi.csdn.net/attachment/201104/28/63172_1304005207iaVA.jpg
      

  6.   


    如果‘set nams utf8;’那么中文也就成了乱码。
      

  7.   

    mysql > show create table t_user_base_info;
    t_user_base_info | CREATE TABLE `t_user_base_info` (
      `id` varchar(32) NOT NULL DEFAULT '' COMMENT 'id',
      `first_name` varchar(255) DEFAULT NULL COMMENT '名',
      `family_name` varchar(255) DEFAULT NULL COMMENT '姓')
    ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='个人信息表' mysql> show full columns from t_user_base_info;+------------------------+--------------+-----------------+------+-----+---------+-------+---------------------------------+--------------------------------+
    | Field                  | Type         | Collation       | Null | Key | Default | Extra | Privileges                      | Comment                        |
    +------------------------+--------------+-----------------+------+-----+---------+-------+---------------------------------+--------------------------------+
    | id                     | varchar(32)  | utf8_general_ci | NO   | PRI |         |       | select,insert,update,references | id                             |
    | first_name             | varchar(255) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references | 名                             |
    | family_name            | varchar(255) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references | 姓                             |
    mysql> show variables like 'char%';
    +--------------------------+---------------------------------------------------------+
    | Variable_name            | Value                                                   |
    +--------------------------+---------------------------------------------------------+
    | character_set_client     | utf8                                                    |
    | character_set_connection | utf8                                                    |
    | character_set_database   | utf8                                                    |
    | character_set_filesystem | binary                                                  |
    | character_set_results    | utf8                                                    |
    | character_set_server     | utf8                                                    |
    | character_set_system     | utf8                                                    |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |
    +--------------------------+---------------------------------------------------------+
    8 rows in set
    请看上面的结果。
      

  8.   

    估计你的delphi6用的是GBK编码或其他。而你的结果集character_set_results | utf8 |,如果2个不一致就导致乱码了。但是具体要怎么改,不知道!
      

  9.   

    设置my.ini配置文件
    default-character-set=utf8
      

  10.   

    问题是当我查询时设置为utf8,那么中文也就成了乱码。
      

  11.   

    各位高手,就没有办法解决查询‘Jördis’后显示正常吗?
      

  12.   

    你插入数据后直接在命令行用sql查看数据..看是否是乱码..我怀疑你这个是delphi的问题
      

  13.   

    用Navicat Premium连接mysql后查都正常的。
      

  14.   

    15楼说得很清楚, DELPHI6的工作环境不是utf8的, 用set names utf8是不行的。
    试一下 set name latin1
      

  15.   

    通过mysql admin将“myname”字段的编码方式改成你想要的编码方式
      

  16.   

    检查一下  show  variables like '%character&'  插卡数据库服务器的字符集  然后set names 夫妇其字符集   
      

  17.   

    你看到乱码是因为你delphi6不能正确显示utf8的原因,就像printf和wprintf一个是ascii一个是unicode但是就是没有utf8。或许你可以试一下把utf8转为unicode,这样应该可以正常显示。
      

  18.   

    我设成了unicode还是显示不出来啊。
      

  19.   

    连接字符集和客户端字符集都用utf8你查出来的数据就是utf8的。你要用系统提供的API把你查出来的数据转换成unicode。还是不能显示那就没辙了。
      

  20.   

    我开始是set names utf8的,后来发现中文也成了乱码,请问怎么转 unicode?
      

  21.   


    utf8tounicode()函数返回值是整型的数据,不对吧。
      

  22.   

    首先你的程序一定要是unicode版本,这个在工程的配置里面应该可以配置的。http://topic.csdn.net/t/20030709/11/2007360.html这里有怎么用的。我对delphi不太熟悉。其实windows的MultiByteToWideChar,WideCharToMultiByte也可以做到的自己试一下怎么转吧。