我在“天涯”等页面可能正常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
找很多方法都不行,怎么回事呢?我是转如这种页面地址内容的: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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货