2016-05-05 12 views
0

私はMSSQLデータベーステーブルのすべての行を返し、JSON_ENCODEでそれらを吐き出しようとしています。PHP Json PDO :: FETCH_ASSOCを符号化

これを使用して$ jsonをエコーすると、空白のページが表示されます。私がそのvarでvar_dumpを実行すると、私はboolを返します。

$sth = $db->prepare("SELECT * FROM dbo.Devices"); 
$sth->execute(); 

$array = $sth->fetchAll(PDO::FETCH_ASSOC); 
$json = json_encode($array); 

私は結果VARに同じfetchAllのを配置し、それを印刷した場合は、それが正常に動作します!

Working using print function. 
$result = $sth->FetchAll(); 
print_r($result); 

私は同様の問題を持つ他の人の読んで、私はjson_encode前に、しかし、空白のページの同じ結果と$アレイ上にはutf8_encodeを行うことを試みたので、それはUTF8エンコーディングの問題だったこと。誰もこれを説明できますか?

+0

2番目の例では、 'PDO :: FETCH_ASSOC'は使用しません。そのオプションを削除すると結果が 'json_encode()'できますか? – WillardSolutions

+0

いいえ、それも削除すると空白のページが表示されます。 – 0perator

+0

json_encoded結果が表示されないので、空白のページが表示されますか? 'print_r'は画面に表示され、' json_encode'は画面に表示されません。 – WillardSolutions

答えて

1

json_encodeは、文字エンコーディングの影響を受けやすい文字です。エンコーディングを処理できない場合は失敗します。 print_rはありません。それはあなたがそれを与えるものを喜んで印刷します。

utf8_encode修正は、ソースデータ内の文字列がISO-8859-1としてエンコードされている場合にのみ機能します。そうだとすれば、それはうまくいくはずです。このようにしてください... https://stackoverflow.com/a/2790107/111755

関連する問題