我将php的编码设为uf8,数据库编码也设为uf8,数据库连接也设置了 set names uf8 ,但是页面输出都是乱码,
我必须将 set names 设置问gbk,页面也设置为gbk才能正常显示,但是我数据库编码设置就是uf8呀。这是怎么回事呢?

解决方案 »

  1.   

    你的程序页面是什么格式的?
    用记事本打开,然后另存为"utf-8"格式
      

  2.   

    是不是apache服务器的默认字符问题。设置下adddefaultchar utf-8
    或者设置php.ini defaultchar
      

  3.   

    可能是数据库里的数据是gbk的,
      

  4.   

       
      您好 ,您所说的html  怎么 设置  ??
      

  5.   

    <html>
    <META http-equiv=Content-Type content='text/html; charset= utf-8 '>
    </html>
    你加上这个看看行不行》
      

  6.   

    数据本身可能是gbk的
    mb_detect_encoding检查一下从数据库中取出来的字符编码
      

  7.   

    再看三个:
    列编码 
    PHP文件编码 
    <META http-equiv=Content-Type content='text/html; charset= utf-8 '> 
      

  8.   

    同意,HTML头部规定为utf8,否则就lz这个问题,我也碰到过
      

  9.   


    检测出来是 ASCII 不是gbk 也不是 uf8,为什么会这样?数据库编码我已经设置问uf8了啊。为什么ASCII编码将数据库连接设置为gbk就可以显示正常了,而uf8却不行?数据库里面的内容是我用Navicat Lite for MySQL 直接输入的,和这个有关系?
      

  10.   

    文件本身最好也用UTF-8,unicode编码。
      

  11.   

    你的程序文件物理编码是什么?
    你的html meta设置成utf-8了吗?具体如ls一些朋友的建议。
    还不行你试试php的 header('Content-Type:text/html;charset=utf-8');
    因为apache有设置默认编码的话,会忽略html 的meta编码设置。
      

  12.   

    不好意思,刚才检测了一个数组显示 ASCII ,单独检测数组中的一个值显示utf-8;我有试了下,页面编码设置成什么都可以,最多就是显示 ����,然后用鼠标右键点网页将编码变一下就可以了,但是 set names gbk 这个只能是gbk,如果设置成uf8,页面上显示的就是问号,无论页面编码是uf8还是gbk都显示为问号。而再用mb_detect_encoding检测数组中的单个值时编码就成了ASCII,我将数据库中的内容放到数组再检测有影响么?
      

  13.   

    没有html的内容,我直接用header('Content-Type:text/html;charset=utf-8'); 这个设置页面编码了。只用echo输出了数据库中的汉字。就出现了上面的情况,页面文件本身也是 utf-8的。
      

  14.   

    啊。,终于找到问题了,我把utf8写成uf8了。搞了我一天,不好意思,对不住大家了。