问题是这样的,以前程序中没有使用mysql_query("SET NAMES UTF8"),关于这行代码的作用我不是很清楚,就在代码中加了这一句,但是发现加了这句话后以前插入的数据显示乱码,但是加入这句话以后插入的数据显示正常,因为我在加入这段代码后插入了很多内容,所以不想删掉,有没有解决办法呢?能够同时让加入mysql_query("SET NAMES UTF8")前后的数据都能显示正常?

解决方案 »

  1.   


    将数据库中取出来的数据进行转码:
    $newdata = iconv("GBK", "UTF-8", $data);
      

  2.   

    那有什么办法。现在以utf-8取数据。那么以前的数据就会乱码。遍历转码就是了。
      

  3.   

    你将转换语句写到循环里不就行了吗:$arr = array();
    while($rows = mysql_fetch_array()){
        array_push($arr,$rows);
    }
    function changeEncode($arr){
    foreach($arr as $ar){
      foreach($ar as $a){
        $a = iconv("GBK", "UTF-8", $a);
      }
    }
    }
    //哪转哪调用
    changeEncode($a);
      

  4.   

    谢谢大家了,我的做法是 在需要转换的页面加mysql("set names utf8");如果以前没有使用mysql("set names utf8")插入数据,那么就不必加这句话,只能暂时这样了