解决php调用带输出参数的MySQL返回中文时乱码

0
<script language="javascript" type="text/javascript" src="http://static.bshare.cn/b/buttonLite.js#style=-1&amp;uuid=23a3475a-b05e-4ee9-bea7-b3336a11ccf6&amp;pophcol=2&amp;lang=zh"></script><script language="javascript" type="text/javascript" src="http://static.bshare.cn/b/bshareC2.js"></script>


【错误经过】:调用MySQL存储过程时,需要根据传入参数判断后输出一段中文字符串变量,结果php获取后显示为"??????,???!".

存储过程

delimiter // CREATE PROCEDURE P__User_RegUser( out strMessage varchar(1000), in strAlias varchar(100), in strPwd varchar(100) ) Begin set strMessage = ''; if not exists(select * from _User where UserName = strAlias) then begin insert into _User(UserName, PassWord, Activeflag, CreateTime) values(strAlias, strPwd, 0, now()); end; else begin set strMessage = '用户已存在,请重试!'; end; end if End; //
【PHP代码】:

try { $username = 'abandonship'; $pwd = 'banlao123'; mysql_query("set @Message"); $result = mysql_query("call P__User_RegUser(@Message, '{$username}','{$pwd}')", $conn) or die("Query failed:".mysql_error()); $result = mysql_query("select @Message",$conn); $row = mysql_fetch_row($result); $message = $row[0]; if($message != ''){ echo $message; } else{ print "Last id is:".mysql_insert_id(); } } catch (Exception $e) { echo "Exception Info:".$e; }

【处理过程】:

1. 先后检查表、字段、存储过程的编码方式,发现皆是utf-8。

2. 先后查找关于phpMyadmin、MySQL Workbench等关于设定编码格式的资料,未果。

3. 尝试传入FreeBSD上测试,结果显示正常!!这难道和win7+IIS7.5有关?十分不解

结果暂时在打开连接串后加入以下三句以强制转换,结果显示正常,-_______-!!!!!等晚上在win7上装个apache, 在测试下!

mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER_SET_CLIENT=utf8"); mysql_query("SET CHARACTER_SET_RESULTS=utf8");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值