mysql存储过程字符集的问题 存储过程调用的参数为中文时产生乱码,该如何解决呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的测试结果如下。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> 存储过程有中文的将编码格式设置为utf8CREATE 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网页调用时候就会出现乱码,不知道为什么? 插入后,看一下HEX的码是什么?'2008-12-31按排期交货'select hex(columnName) from xx where xx='GC08121269' 在MYSQL输入参数是可以的,而ASP网页中的TEXT文本框的值调用时就为乱码 想看一下通过ASP网页输进去的到底是什么码。所以建议你用HEX看一下表中放的是什么东西。这样和中文原码对照一下,或许可以找到方案。 323030382D31322D3331E68C89E68E92E69C9FE4BAA4E8B4A7,这是什么东东? 32 = 230 = 030 = 038 = 8建议你用ASP和MYSQL都插入一条同样的中文内容,然后比较。 ASP和MYSQL都插入一条同样的中文内容对比结果:323030382D31322D3331C2B0C2B4C385C385C386C39AC2BDC2BBC2BBC3B5323030382D31322D3331E68C89E68E92E69C9FE4BAA4E8B4A7 这个问题挺麻烦。这个是正常的UTF8+----------------------------------------------------------------------+| _utf8 0x323030382D31322D3331C2B0C2B4C385C385C386C39AC2BDC2BBC2BBC3B5 |+----------------------------------------------------------------------+| 2008-12-31按排期交货 |+----------------------------------------------------------------------+但这个 试也几种可能,都没看出来这个什么编码集的。+--------------------------------------------------------------+| _latin1 0x323030382D31322D3331E68C89E68E92E69C9FE4BAA4E8B4A7 |+--------------------------------------------------------------+| 2008-12-31鎸夋帓鏈熶氦璐? |+--------------------------------------------------------------+用命令show variables like 'char%'; 看一下你的MySQL的字符集相关变量都是些什么? Variable_name Valuecharacter_set_client utf8character_set_connection utf8character_set_database utf8character_set_filesystem binarycharacter_set_results utf8character_set_server utf8character_set_system utf8character_sets_dir C:\Program Files\MySQL\MySQL Server 5.0\share\char这个是结果,应该没问题的。现在换了个方法,存储过程带中文的参数不要了,然后再建个链接,把参数更新进去,分两步来吧。测试是可以的 求 mysql 第三方插件 MySQL replication配置问题 关于MySQL存储过程中嵌套循环的一个问题 【小问题7--如何返回操作影响数目】 求mysql case 语句 请教Windows环境下MySQL怎样实现双向同步? 大家帮我看看这个mysql连接语句到底有什么问题? 如何获得字符(varchar)字段的最大值,字段里面的值为整形的字符串 MySQL大数据备份 关于mysql自增列的问题:Duplicate entry '0' for key 'PRIMARY' 关于Dspace1.5 连接 PostgreSQL 出错的问题 如何在update里更新日期信息
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>
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网页调用时候就会出现乱码,不知道为什么?
'2008-12-31按排期交货'select hex(columnName) from xx where xx='GC08121269'
30 = 0
30 = 0
38 = 8建议你用ASP和MYSQL都插入一条同样的中文内容,然后比较。
323030382D31322D3331C2B0C2B4C385C385C386C39AC2BDC2BBC2BBC3B5
323030382D31322D3331E68C89E68E92E69C9FE4BAA4E8B4A7
+----------------------------------------------------------------------+
| _utf8 0x323030382D31322D3331C2B0C2B4C385C385C386C39AC2BDC2BBC2BBC3B5 |
+----------------------------------------------------------------------+
| 2008-12-31按排期交货 |
+----------------------------------------------------------------------+但这个 试也几种可能,都没看出来这个什么编码集的。
+--------------------------------------------------------------+
| _latin1 0x323030382D31322D3331E68C89E68E92E69C9FE4BAA4E8B4A7 |
+--------------------------------------------------------------+
| 2008-12-31鎸夋帓鏈熶氦璐? |
+--------------------------------------------------------------+用命令show variables like 'char%'; 看一下你的MySQL的字符集相关变量都是些什么?
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
这个是结果,应该没问题的。
现在换了个方法,存储过程带中文的参数不要了,然后再建个链接,把参数更新进去,分两步来吧。测试是可以的