<script language="javascript" type="text/javascript" src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=23a3475a-b05e-4ee9-bea7-b3336a11ccf6&pophcol=2&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");