其实数据是从access表中,我用php读出来直接写入的,也没有设置编码这一说。我看了论坛上的编码的帖子,在提取数据之前用这样的语句:mysql_query('SET NAMES gbk;');
或者mysql_query('SET NAMES gb2312;');都不成功!

解决方案 »

  1.   

    当然有关!
    默认的:latin1 编码类型将原样返回写入的数据“数据是从access表中,我用php读出来直接写入的”
    并不能说编码就一定是gb2312的,access也有unicode编码类型的字段呀
      

  2.   

    呵呵,是啊,你用mb_detect_encoding探测一下数据的实际编码再说。
      

  3.   

    晕倒,节外生枝。Fatal error: Call to undefined function: mb_detect_encoding() 。我是这样写的:
    echo mb_detect_encoding($sname);  $sname是显示乱码的字段
      

  4.   

    那个问题解决了,是因为头部加了discuz!博客中的头文件所致,调整了顺序就可以了。但是如果自己写程序,头部加上discuz!博客头文件,调用discuz!博客数据表中的字段时,中文就是乱码了,头文件的调用是为了提取出来当前用户的值,不能去掉。那么怎么才能在后面使我提取出来的字段显示正常,也就是一个转换的问题了。注:discuz!博客的那个字段,我用mb_detect_encoding检测出来是ASCII编码。
      

  5.   

    我又试了试,去掉前面的头文件就可以正常显示,加上就是乱码。刚才说错了,是加的discuz!的头文件,不是他的博客的头文件。头文件如下:
    require("discuz/include/common.inc.php");
    require("discuz/include/forum.func.php");
      

  6.   

    把数据库编码改成utf8_generai_ci试试看
      

  7.   

    怎么改数据库的编码?可以通过php代码来转换成可以正常显示的编码吗?
      

  8.   

    我想打算通过php代码来实现不同编码之间的转换。
      

  9.   

    我看了本专题中关于mysql乱码的转贴提到,可以在 select /insert /update之前使用:mysql_query("set character_set ***"); ***为编码,不管我改成什么样的编码形式,都无法显示正常。
      

  10.   

    我用 mb_detect_encoding 检测出来的存入的数据是ASCII编码的。
      

  11.   

    但是因为我在本文件的头部加上了:require("discuz/include/common.inc.php"); 就出错了,去掉就正常显示。
    肯定是这个文件中有编码的设置。我的问题是 怎么把读出来的数据转换成别的编码?是两种编码的转换.
      

  12.   

    我这样检测数据的编码对不对?
    $c=mysql_query("select musicname from musiclist");
    $d=mysql_fetch_row($c);
    echo mb_detect_encoding($d[0]);
      

  13.   

    大家帮忙看看一下:我这样检测数据的编码对不对?
    $c=mysql_query("select musicname from musiclist");
    $d=mysql_fetch_row($c);
    echo mb_detect_encoding($d[0]);
      

  14.   

    编码是默认的:latin1。  建议在安装的时候直接选者utf-8 页面代码也使用utf--8