PHP Cron作业json_编码错误
我有一个PHP文件,它运行一个简单的货币转换检查。当我在浏览器中运行它时,它工作得非常好,但我的目标是构建一个cron。当我通过SSH运行脚本时: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 /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编码有效很好,谢谢。