存储过程调用的参数为中文时产生乱码,该如何解决呀?

解决方案 »

  1.   

    我的测试结果如下。mysql> delimiter //
    mysql>
    mysql> CREATE PROCEDURE testp (IN param1 char(100))
        -> BEGIN
        ->   SELECT param1;
        -> END;
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql>
    mysql> delimiter ;
    mysql>
    mysql> call testp('中文');
    +--------+
    | param1 |
    +--------+
    | 中文   |
    +--------+
    1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql>
      

  2.   

    存储过程有中文的将编码格式设置为utf8
    CREATE DEFINER=`root`@`%` PROCEDURE `P_SelBosCombinedEdit`($M_FWorkNo VARCHAR(45),$M_FDeliveryDate VARCHAR(128) CHARACTER SET utf8)
    调用:
    CALL P_SelBosCombinedEdit('GC08121269','2008-12-31按排期交货');
    现在的问题是在MYSQL调用(CALL())没有问题,但是用ASP网页调用时候就会出现乱码,不知道为什么?
      

  3.   

    插入后,看一下HEX的码是什么?
    '2008-12-31按排期交货'select hex(columnName) from xx where xx='GC08121269'
      

  4.   

    在MYSQL输入参数是可以的,而ASP网页中的TEXT文本框的值调用时就为乱码
      

  5.   

    想看一下通过ASP网页输进去的到底是什么码。所以建议你用HEX看一下表中放的是什么东西。这样和中文原码对照一下,或许可以找到方案。
      

  6.   

    323030382D31322D3331E68C89E68E92E69C9FE4BAA4E8B4A7,这是什么东东?
      

  7.   

    32 = 2
    30 = 0
    30 = 0
    38 = 8建议你用ASP和MYSQL都插入一条同样的中文内容,然后比较。
      

  8.   

    ASP和MYSQL都插入一条同样的中文内容对比结果:
    323030382D31322D3331C2B0C2B4C385C385C386C39AC2BDC2BBC2BBC3B5
    323030382D31322D3331E68C89E68E92E69C9FE4BAA4E8B4A7
      

  9.   

    这个问题挺麻烦。这个是正常的UTF8
    +----------------------------------------------------------------------+
    | _utf8 0x323030382D31322D3331C2B0C2B4C385C385C386C39AC2BDC2BBC2BBC3B5 |
    +----------------------------------------------------------------------+
    | 2008-12-31按排期交货                                                 |
    +----------------------------------------------------------------------+但这个 试也几种可能,都没看出来这个什么编码集的。
    +--------------------------------------------------------------+
    | _latin1 0x323030382D31322D3331E68C89E68E92E69C9FE4BAA4E8B4A7 |
    +--------------------------------------------------------------+
    | 2008-12-31鎸夋帓鏈熶氦璐?                                   |
    +--------------------------------------------------------------+用命令show variables like 'char%'; 看一下你的MySQL的字符集相关变量都是些什么?
      

  10.   

    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.0\share\char
    这个是结果,应该没问题的。
    现在换了个方法,存储过程带中文的参数不要了,然后再建个链接,把参数更新进去,分两步来吧。测试是可以的