欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于PHP自動判斷字符集并轉(zhuǎn)碼的詳解

 更新時間:2013年06月26日 10:46:36   作者:  
本篇文章是對PHP自動判斷字符集并轉(zhuǎn)碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
原理很簡單,因為gb2312/gbk是中文兩字節(jié),這兩個字節(jié)是有取值范圍的,而utf-8中漢字是三字節(jié),同樣每個字節(jié)也有取值范圍。而英文不 管在何種編碼情況下,都是小于128,只占用一個字節(jié)(全角除外)。
如果是文件形式的編碼檢查,還可以直接check utf-8的BOM信息。話不多說,直接上函數(shù),這個函數(shù)是用來對字符串進(jìn)行檢查和轉(zhuǎn)碼的。
復(fù)制代碼 代碼如下:

<?php
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)   
  {   
     //第一個字節(jié)判斷通過   
       $char = $string{++$i};   
     if((ord($char)&128)==128)   
       {   
             //第二個字節(jié)判斷通過   
           $char = $string{++$i};   
             if((ord($char)&128)==128)   
           {   
                $encoding = "UTF-8";   
                break;   
           }   
         }   
   }   

  if((ord($string{$i})&192)==192)   
       {   
           //第一個字節(jié)判斷通過   
          $char = $string{++$i};   
         if((ord($char)&128)==128)   
           {   
            // 第二個字節(jié)判斷通過   
                $encoding = "GB2312";   
    break;   
   }   
      }   
 }   

 if(strtoupper($encoding) == strtoupper($outEncoding))   
  return $string;   
 else  
        return iconv($encoding,$outEncoding,$string);   
}
?>

相關(guān)文章

最新評論