我想大家都知道utf8轉big5,那就用iconv嗎!
不過我在使用iconv,將utf8轉big5時就出現一個問題,就是只要遇到utf8轉big5,沒有對應的big5碼的時候就有狀況了,原本以為就那個字沒出現,結果勒,是當對應不到big5碼後它是以後的通通不見了,當然這下子就不妙了。

最後我只好一個字一個字轉,然後遇到沒有對應的碼就用"■"代替,雖然損失了效能,但是卻確保了正確性。

程式碼如下:

          //逐字轉換utf8字串為big5
        function  utf8_2_big5($utf8_str)  {
                $i=0;
                $len  =  strlen($utf8_str);
                $big5_str="";
                for  ($i=0;$i<$len;$i++)  {
                        $sbit  =  ord(substr($utf8_str,$i,1));
                        if  ($sbit  <  128)  {
                                $big5_str.=substr($utf8_str,$i,1);
                        }  else  if($sbit  >  191  &&  $sbit  <  224)  {
                                $new_word=iconv("UTF-8","Big5",substr($utf8_str,$i,2));
                                $big5_str.=($new_word=="")?"■":$new_word;
                                $i++;
                        }  else  if($sbit  >  223  &&  $sbit  <  240)  {
                                $new_word=iconv("UTF-8","Big5",substr($utf8_str,$i,3));
                                $big5_str.=($new_word=="")?"■":$new_word;
                                $i+=2;
                        }  else  if($sbit  >  239  &&  $sbit  <  248)  {
                                $new_word=iconv("UTF-8","Big5",substr($utf8_str,$i,4));
                                $big5_str.=($new_word=="")?"■":$new_word;
                                $i+=3;
                        }
                }
                return  $big5_str;
    }  
創作者介紹

右腦 想去環遊世界

yoonow 發表在 痞客邦 PIXNET 留言(0) 人氣()