使用的数据库是mysql,mysql的字符集是gbk,delphi通过ODBC驱动连接mysql,在读取中文内容时读出来时乱码,全是问号。
请问高手们,应该如何解决啊(数据库不可改)?在线急等,谢谢!

解决方案 »

  1.   

    系统是Windows 2003,在Windows 2000 Server下读取中文是没问题的。



    .
    .
    .
    .
      

  2.   

    http://www.shunz.net/tags/mysql%E4%B9%B1%E7%A0%81弄明白了mysql数据库乱码问题
    
        使用mysql以来,一直有个非常头疼的问题,就是,mysql的默认支持编码是latin字符集,所以中文字符在数据库里查看的时候看到的是乱码。但是如果将mysql编译为默认编码utf-8的话,又会造成原来的数据库不兼容,使得原来的内容在网站上显示为乱码。    Mysql 4.1.x出来以后,引入了collation (校勘)的概念,终于有办法让mysql同时支持多种编码的数据库了。用以下语句可以创建utf-8编码的数据库:CREATE DATABASE `mytest` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
        但是仅仅是将数据库的校勘改为utf-8是不够的,还必须在连接了mysql数据库之后用这个语句来设置collation connection:SET NAMES 'utf8';
        如此,才能在php程序里得到正确编码的字符,并将其显示在web页面里。在drupal里是修改 include/database.mysql.inc 文件,在function db_connect($url)函数的 return $connection; 语句之前加入:mysql_query("SET NAMES 'utf8'",$connection);
        这样就能彻底解决mysql的中文乱码问题。    但是,目前我还没有弄明白,如何将原来的latin1编码的mysql数据库内容转换到utf-8来,我采用了两种方法,一是利用phpmyadmin的操作菜单里的“整理”命令;另一个办法是用mysqldump导出,结果两种办法都行不通,希望有高手指点一二。
      Tags: drupal mysql 数据库 乱码 数据库编码 数据库乱码 mysql乱码 mysql编码 /////////////////////终于告别了mysql数据库乱码
    
        今天上午,抽时间将本Blog数据库编码更换到了utf-8,终于告别了mysql数据库乱码问题,现在,不管是用什么方式备份,得到的数据都不再是令人头疼的乱码了:)    完成这次转换的大功臣是drupal的一个非常强大的module:dba.module(database administration),以前,因为我有phpmyadmin,所以从来没有用过这个module,这一次为了转换编码,所以装上试了一下,发现 通过dba模块备份的数据果然没有乱码,于是,前几天的问题得到了解决,我的编码转换大计得以实施。    下面,我就介绍一下我的转换过程以及注意事项(实施环境:mysql 4.1.x,phpmyadmin 2.6.x):    1、首先,也是最重要的,就是对原始数据库的备份,因为转换过程很可能出问题,所以,首先要将原始数据库完完整整的备份一份。    2、利用phpmyadmin将数据库的结构备份出来,注意备份的时候“添加 AUTO_INCREMENT 值”这个选项要取消。利用编辑器打开备份文件,将“DEFAULT CHARSET=latin1”删除。    3、利用dba.module的备份功能将除了aggregator_item、aggregator_category_item、cache、 history、locales_source、locales_target、menu、search_index、search_total、 sessions、watchdog以外的所有表,如果你的数据量比较大,可以分多次备份,使得每个文件的大小在1M以内。    4、新建一个数据库,将默认编码设置为utf-8。    5、将前面备份的数据库结构导入新建的数据库中。    6、将表数据导入到新数据库中。    7、将drupal的设置文件中的数据库设置改为新的数据库。并按照前两天的文章里提到的办法修改database.mysql.inc文件。    8、重新利用drupal的local功能汉化。    然后一切都ok了。