2014-11-02 64 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 

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