我在“天涯”等页面可能正常utf-8 转 gb2312。但在“猫扑”上是乱码。
找很多方法都不行,怎么回事呢?我是转如这种页面地址内容的:http://dzh.mop.com/shzt/20110621/0/7583O5I26dec21FO.shtml
用iconv \ mb_convert_encoding都不行。
用别人的函数,在猫扑上也不行:
function GetGB2312String($in_charset, $out_charset, $inStr)
{
$tostr = "";
for($i=0;$i<strlen($inStr);$i++)
{
   $curbin = ord(substr($inStr,$i,1));
   if($curbin < 0x80)
   {
    $tostr .= substr($inStr,$i,1);
   }elseif($curbin < bindec("11000000")){
    $str = substr($inStr,$i,1);
    $tostr .= "&#".ord($str).";";
   }elseif($curbin < bindec("11100000")){
    $str = substr($inStr,$i,2);
    $tostr .= "&#".$this->GetUnicodeChar($str).";";
    $i += 1;
   }elseif($curbin < bindec("11110000")){
    $str = substr($inStr,$i,3);
    $gstr= iconv($in_charset,$out_charset,$str);
    if(!$gstr)
    {
    $tostr .= "&#".$this->GetUnicodeChar($str).";";
    }else{
    $tostr .= $gstr;
    }
    $i += 2;
   }elseif($curbin < bindec("11111000")){
    $str = substr($inStr,$i,4);
    $tostr .= "&#".$this->GetUnicodeChar($str).";";
   
    $i += 3;
   }elseif($curbin < bindec("11111100")){
    $str = substr($inStr,$i,5);
    $tostr .= "&#".$this->GetUnicodeChar($str).";";
    $i += 4;
   }else{
    $str = substr($inStr,$i,6);
    $tostr .= "&#".$this->GetUnicodeChar($str).";";
    $i += 5;
   }
}
return $tostr;
}//end function