PHP Cron作业json_编码错误

PHP Cron作业json_编码错误,php,crontab,json,Php,Crontab,Json,我有一个PHP文件,它运行一个简单的货币转换检查。当我在浏览器中运行它时,它工作得非常好,但我的目标是构建一个cron。当我通过SSH运行脚本时: php /path/to/file.php 我得到以下信息: PHP Warning: json_encode(): Invalid UTF-8 sequence in argument in /path/to/file.php on line 36 其中第36行是: fwrite($fh, json_encode($conversions))

我有一个PHP文件,它运行一个简单的货币转换检查。当我在浏览器中运行它时,它工作得非常好,但我的目标是构建一个cron。当我通过SSH运行脚本时:

php /path/to/file.php
我得到以下信息:

PHP Warning:  json_encode(): Invalid UTF-8 sequence in argument in /path/to/file.php on line 36
其中第36行是:

fwrite($fh, json_encode($conversions));
…其中$conversions是一个简单的一维数组

以下是文件:

$conversions = array();

$currencies = json_decode(file_get_contents("/path/to/currencies.json"), true);

foreach($currencies as $cur=>$data){


    //make string to be put in API
    $string = "1USD=?".$data['code'];
    //Call Google API
    $google_url = "http://www.google.com/ig/calculator?hl=en&q=".$string;

    $ch = curl_init();  
    // set URL and other appropriate options  
    curl_setopt($ch, CURLOPT_URL, $google_url);  
    curl_setopt($ch, CURLOPT_HEADER, 0);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     
    // grab URL and pass it to the browser    
    $result = curl_exec($ch);
    //Explode result to convert into an array
    $result = explode('"', $result);

    $converted_amount = explode(' ', $result[3]);
    $conversion = $converted_amount[0];
    //$conversion = $conversion * $amount;
    $conversions[$cur] = $conversion;
    if($conversion==0){ exit('0 Return Error'); }

    curl_close($ch);

}

$fh = fopen("/path/to/currency_conversions.json", 'w') or die("can't open file");
fwrite($fh, json_encode($conversions));
fclose($fh);

尝试将PHP版本更新为5.2.7版本之后的版本
旧版本有UTF-8错误。

我搜索了你,发现json编码只接受UTF-8 因此,解决方案如下:

for($i=0;$i<count($conversions);$i++)
    $conversions[$i] = utf8_encode($conversions[$i]);
fwrite($fh, json_encode($conversions));

对于($i=0;$iSo,$conversions数组中有什么?一些文本?随机二进制垃圾?这是一系列国家代码(key)及其转换率(val)比如:USD=>1,CAD=>1.23,EUR=>1.05…我们需要看看$conversions是用什么和如何填充的。它是从命令行参数填充的吗?从数据库填充的吗?你的文件系统和数据库是用UTF-8编码还是用拉丁语编码的?我已经在我的问题中添加了完整的代码。必须修改一点来维护密钥,但utf8\U编码有效很好,谢谢。