2014-11-02 56 views
0

在PHP 5上運行,我曾嘗試以下兩個命令從ISO-8859-1字符串上傳到鏈接到UTF-8的網頁一個UTF-8數據庫:Unix上的Cron Job SSH服務器:UTF-8編碼?

$data[] = utf8_encode((string)$child); 

...或:

$data[] = convertToUtf8((string)$child); 

function convertToUtf8($text) { 
// cURL('http://'.$url); 

    preg_match('/<meta.*?charset=(|\")(.*?)("|\")/i', $html, $matches); 

    $charset = $matches[2]; 

    if($charset) 
     return mb_convert_encoding($text, 'UTF-8', $charset); 
    else 
     return $text; 
} 

如果我直接從瀏覽器訪問該文件執行PHP腳本,無論這些作品就像一個魅力之一:«E»進口是其漂亮的法國人的自我。但是,當我嘗試從Unix終端SSH(cron job OR命令行)執行相同的腳本時,它不會轉換代碼,因此«é»顯示爲«Ã»。

任何想法??我嘗試刪除cron作業並替換腳本以確保代碼正在通過。這變得越來越瘋狂!

更新 - 解

事實證明,這種特殊的功能需要PHP的版本。用下面的命令執行它在終端(在cron作業寫命令等)需要照顧的問題:

php5.4 xmluploader.php 
+1

答案在http://stackoverflow.com/questions/8138124/implications-of-lc-all-c-to-speedup-grep應該給你一些如何解決這個問題的想法。我會搜索'LC_ALL french',希望你能找到更接近的答案。祝你好運。 – shellter 2014-11-02 20:48:39

回答

0

好了,一路上我肯定得去探索一些編碼見解的方式,但在最後,解決方案非常簡單。

我被鍵入

php myjob.php 

這是一個非首發運行作業,因爲版本默認情況下,我的服務器上過於原始,不包含功能函數utf8_encode或mb_convert_encoding。因此,我現在開始使用以下命令的工作:

php5.4 myjob.php 

...它的作品就像一個魅力。