0

通貨換算の簡単なチェックを実行している 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 は単純な 1 次元配列です

ファイルは次のとおりです。

$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);
4

2 に答える 2

1

さて、私はあなたを検索しました、そして私はjson_encodeがUTF-8だけを受け入れるのを見つけました、それでここに解決策があります:

for($i=0;$i<count($conversions);$i++)
    $conversions[$i] = utf8_encode($conversions[$i]);
fwrite($fh, json_encode($conversions));
于 2012-07-25T15:07:52.090 に答える
0

PHPバージョンをバージョン5.2.7より後のバージョンに更新してみてください。古いバージョンにはUTF-8のバグがあります。

于 2012-07-25T15:07:48.393 に答える