我在做一个采集title的程序,将采集过来的数据在网页中显示,网页本身是utf8的,我用的是这个函数:
$icn=mb_convert_encoding($arr1,'utf-8','GB2312,GBK,BIG5,utf-8');
实验后发现其他的网页都正常,可要是抓取utf-8编码的网页就会乱码,这怎么解决呢?

解决方案 »

  1.   

    $icn = mb_convert_encoding($arr1, 'utf-8', mb_check_encoding('utf-8')? 'utf-8' : 'GBK');
      

  2.   

    我刚才用你的办法试了一下,果然utf8的正常了,可刚抓取淘宝的又乱码了,淘宝是gbk编码的,这是怎么回事呢?
      

  3.   

    function safeEncoding($string,$outEncoding='UTF-8')   
    {   
        $encoding='UTF-8';   
        for($i=0;$i<strlen($string);$i++)   
        {   
            if(ord($string{$i})<128)   
            continue;   
            if((ord($string{$i})&224)==224)   
            {  
                $char = $string{++$i};   
                if((ord($char)&128)==128)   
                {     
                   $char = $string{++$i};   
                    if((ord($char)&128)==128)   
                    {   
                        $encoding = 'UTF-8';   
                        break;   
                    }   
               }   
            }   
            if((ord($string{$i})&192)==192)   
            {   
                $char = $string{++$i};   
                if((ord($char)&128)==128)   
                {   
                    $encoding = 'GB2312';   
                    break;   
                }   
            }  
     
        }   
        if(strtoupper($encoding)==strtoupper($outEncoding)){return $string;}
        else{return iconv($encoding,$outEncoding,$string);} 
    }