2010-06-29 68 views
0

我想獲得一個php cli腳本去通過一個文件夾,得到id3標籤,這是在西里爾文utf8,但它在數據庫中。當我執行腳本我來到這裏的數據庫字段的原始UTF像"Àëáåíà"在一個cli腳本閱讀id3的PHP編碼問題

是腳本

<? 
set_time_limit(0); 

include('classes/adodb5/adodb.inc.php'); 
include ('classes/id3/getid3.php'); 

$ftpdir = "/radio/unprocessed/"; 
$processeddir = "/radio/music"; 

//set up the database 

$conn = &ADONewConnection('mysql'); 
$conn->PConnect('localhost','root', '**********','radio'); 

$utf = $conn->Execute("SET NAMES 'UTF8';"); 
$charset = $conn->Execute("CHARSET UTF8;"); 

//function for processing the actual file 
function processmp3($fn, $folder, $conn){ 
         $getID3 = new getID3; 
         $ThisFileInfo = $getID3->analyze($folder.$fn); 
         //this is needed to consolidate all tag formats 
         getid3_lib::CopyTagsToComments($ThisFileInfo); 
         if (array_key_exists('artist', $ThisFileInfo['comments_html'])&& array_key_exists('artist', $ThisFileInfo['comments_html'])){ 
           $artist=($ThisFileInfo['comments_html']['artist'][0]); 
           $title=($ThisFileInfo['comments_html']['title'][0]); 
         }else{$artist ='not defined'; $title="not defined";} 
         //random name 
//random name 
         $rand_name = md5(time()).rand(1,1000).".mp3"; 
         //movefile 
         //rename($folder.$fn,'/radio/music/'.$rand_name); 
         //put in DB 
         $insert = $conn->Execute('INSERT INTO unprocesseds VALUES("","'.$artist.'","'.$title.'","'.$rand_name.'","'.$fn.'");'); 
         } 


//cyccle through contents 
if($handle = opendir($ftpdir)){ 
     while(false !== ($file = readdir($handle))){ 
       $type = mime_content_type($ftpdir.$file); 
       if ($type=='audio/mpeg'){processmp3($file, $ftpdir, $conn);} 
       else { 
         if(is_file($ftpdir.$file)){unlink($ftpdir.$file);} 
         } 
       } 


     } 

closedir($handle); 

回答

0

在我的具體情況兩件事情正在發生。

  1. 膩子在某種程度上忽視我明確的「使用UTF-8」設置
  2. 我使用沒有複製ID3標籤爲「comments_html」錯誤的類。當我print_r-ed的結果,我發現通過訪問實際的標籤,我能夠得到unfrupted utf-8