很少提问过,自己动手折腾了3天,网上也被我搜了个便,实在解决不了,来请教下大家。情况是这样,我用PHP连接MYSQL执行存储过程,可存储过程返回给PHP的是乱码PHP文件格式是UTF8的,MYSQL数据库是UTF8,数据表是UTF8,在PHP也执行了SET NAMES UTF8,但得到的还是乱码
直接在客户端mysql.exe执行存储过程就不乱码,到了PHP上就得到乱码为什么啊???头都大了我尝试过,存储过程中使用SELECT语句查询数据表中的中文内容,PHP能取到正确取到中文值,但是直接在存储过程上面打入中文然后通过SELECT返回,PHP得到的却是乱码。不解举个例子:
CREATE PROCEDURE test(OUT rtStr NVARCHAR(30))
BEGIN
SET rtStr = '为什么这个值到了PHP上面就变成了乱码啊?';
SELECT rtStr;
END//

解决方案 »

  1.   

    字符集问题,show variables like 'char%'; 
      

  2.   


    通过SET NAMES UTF8就把字符集全部设置成了UTF8了,能详细讲下具体原因么?帮忙解决下。
      

  3.   

    参考下贴中的解释。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  4.   

    从参数里传进中文文字不出现乱码,在存储过程中直接把中文赋给变量就出现乱码,我上面都写了例子了,直接拿例子来试验下不行么?CSDN有人会吗???帮助下