php各種編碼轉換實現代碼(1/6)

來源:互聯網
上載者:User

$uc2gbtable = $codetable = $big5_data = $gb_data = '';
$gbkunidic = null;

//utf-8 轉gb編碼
function utf82gb($utfstr)
{
 if(function_exists('iconv'))
 {
  return iconv('utf-8','gbk//ignore',$utfstr);
 }
 global $uc2gbtable;
 $okstr = "";
 if(trim($utfstr)=="")
 {
  return $utfstr;
 }
 if(empty($uc2gbtable))
 {
  $filename = dedeinc."/data/gb2312-utf8.dat";
  $fp = fopen($filename,"r");
  while($l = fgets($fp,15))
  {
   $uc2gbtable[hexdec(substr($l, 7, 6))] = hexdec(substr($l, 0, 6));
  }
  fclose($fp);
 }
 $okstr = "";
 $ulen = strlen($utfstr);
 for($i=0;$i<$ulen;$i++)
 {
  $c = $utfstr[$i];
  $cb = decbin(ord($utfstr[$i]));
  if(strlen($cb)==8)
  {
   $csize = strpos(decbin(ord($cb)),"0");
   for($j=0;$j < $csize;$j++)
   {
    $i++; $c .= $utfstr[$i];
   }
   $c = utf82u($c);
   if(isset($uc2gbtable[$c]))
   {
    $c = dechex($uc2gbtable[$c]+0x8080);
    $okstr .= chr(hexdec($c[0].$c[1])).chr(hexdec($c[2].$c[3]));
   }
   else
   {
    $okstr .= "&#".$c.";";
   }
  }
  else
  {
   $okstr .= $c;
  }
 }
 $okstr = trim($okstr);
 return $okstr;
}

 

首頁 1 2 3 4 5 6 末頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.