$conn=mysql_connect('localhost','root','');
    mysql_select_db('test',$conn); 
    mysql_query('SET NAME GBK');//这里编码设置为GBK
    $rs=mysql_query('select * from user');
    do{
        echo 'id  '.iconv('gbk', 'utf-8',$rst[0]).'  //这下面为啥又用utf-8
              姓名  '.iconv('gbk', 'utf-8',$rst[1]).'  
              密码  '.iconv('gbk', 'utf-8',$rst[2]).'  
              性别&nbsp;&nbsp;'.iconv('gbk', 'utf-8',$rst[3]).'&nbsp;&nbsp;<br>';
    }while($rst=mysql_fetch_array($rs));
   

解决方案 »

  1.   

    我这样做后,页面就乱码了,
    吧iconv函数去掉后,就好了,而且我发现不管怎么设置 mysql_query('SET NAME xxx');对页面都没影响这是为什么呢,这跟数据表有关吗,我的数据表时utf-8的
      

  2.   

    不能说是“垃圾”,这能说原作者没有弄清楚 SET NAME 指令的含义,不得已而为之页面需要输出 utf-8 编码的数据,而数据库中相关字段却又设置成了 GBK
    其实只需要
    mysql_query('SET NAME utf8');
    就可以了
      

  3.   

    改成utf8的了,不过没啥反应,感觉他不起作用啊
      

  4.   

    那你总得改写 iconv 这块吧?
      

  5.   

    我是这么理解的既然我的数据库里的数据是utf-8的就没有必要使用iconv转码了吧,
      

  6.   

    如果页面编码是utf-8的话,就不用iconv 了。names 也写错。
     mysql_query('SET NAMES utf8');
      

  7.   

    本帖最后由 xuzuning 于 2012-11-15 14:08:00 编辑
      

  8.   

    这个是数据库连接是指定编码的,并且是php5.2版本以上的吧,以前的版本好像是用mysql_query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary",$con = mysql_connect($dbHost,$dbUser,$dbPwd));
      

  9.   

    个人建议,仅供参考:
    1.编码问题 
    mysql_query('SET NAME GBK') 是连接数据库 访问数据的编码格式
    iconv()是将一个字符串 从某种编码 转换成另一种编码
    原本作者数据库可能是gbk  页面显示是utf-8 所以才转来转去。最好页面 程序 数据库的编码都保持一致。
    2.最好把页面显示和数据访问分开来处理, 你可以读取完数据存在一个数组或者其他容器里 不要把html和数据访问全部一起处理,这样程序很乱,拓展性差。
    3.错误处理和程序设计。你用的是do{}while(),这个循环体,不管什么条件都会至少执行一遍。但是你结合程序设计,你查询出来的用户表,一定会有值?要没有,程序错误怎么处理?没有处理机制。
      

  10.   

    是的我用的事wamp,php是5.3.3的