在MySQL的存储过程中,对某一属性值与中文字符串进行比较,无法正确进行比较!
    cmd中对于mysql中直接写入的中文字符能够进行识别,但是对于通过delphi的ADO控件进行输入的中文字符串,输出字符串为乱码。于是将问题定位于字符集的问题的上,进行相关问题搜索,set names 'gbk',可以实现delphi输入中文字符在cmd下的正确显示,但是存储过程中仍然无法进行正确比较,希望各位能够给予赐教,谢谢!

解决方案 »

  1.   

    检查你的字符集设置。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    show variables like 'char%'; 
    估计是字符集不统一
      

  3.   

    字符集我用了set names 'gbk';
    能够在cmd中显示中文,但是set names只是暂时的修改字符集参数,永久的修改,我还没试过,担心修改了之后恢复不了的。但是set names 'gbk'之后,我在统一的gbk字符集下,重新建立了表单,但是依旧没能进行中文比较。是不是暂时性的修改无效,必须要永久性的修改后,再重新建立表单才能有效啊?谢谢您了!
      

  4.   

    set names 'gbk';
    对以前建立的表、插入的数据没有影响用mYSQLDUMP导出数据->在统一的gbk字符集下重新建立库、表->导入数据my.ini
    [mysql]default-character-set=gbk重新启动MYSQL
      

  5.   


    不是,只要连接没有断开设置依然有效,排序是与collation校对有关,你查一下,这个是不是统一。SET NAMES'utf8';
    它相当于下面的三句指令:
    SET character_set_client = utf8;
    SET character_set_results = utf8;
    SET character_set_connection = utf8;你还要看哈
     character_set_database   | utf8
     character_set_server     | utf8是否也一致!5楼也说了
    set names 'gbk';
    对以前建立的表、插入的数据没有影响。你新加几条数据在实验一下。