私はパブリック API、YQL を使用しています。特に、json を返します。この josn には漢字のフィールドがあります。このAPI URLを直接呼び出すことで、ブラウザでjsonを表示することができ、ブラウザに中国語の文字がjson形式で表示されます(つまり、正しくデコードされ、読み取り可能であると思います)
今、phpで、curlを介してこの同じAPI URLを呼び出します(ブラウザで直接呼び出していたのと同じjsonを返す必要があります)
$session = curl_init($yql_query_url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$yql_json = curl_exec($session);
返されたjsonをphp経由で次の形式で出力します
print_r($yql_json . "\n\n");
print_r(utf8_decode($yql_json) . "\n\n");
それぞれ以下を返します。
{"query":{"count":2,"created":"2012-08-19T07:24:51Z","lang":"en-US","results":{"h1":{"class":"entry-title","content":"康熙來了 2012-06-21 女åç†è²¡ä¾¿æ˜¯å¾·?!"}}}}
{"query":{"count":2,"created":"2012-08-19T07:24:51Z","lang":"en-US","results":{"h1":{"class":"entry-title","content":"???? 2012-06-21 ????????!"}}}}
ご覧のとおり、中国語の文字は表示されません (「コンテンツ」の後)。
私の目標は、最終的にコンテンツフィールド(中国語の文字)を取得してデータベースに挿入することですが、明らかに上記の例は、挿入する正しい中国語の値またはutf-8エンコーディングではないようです
基本的に私が求めているのは、上記の印刷ステートメントに中国語の文字を表示するにはどうすればよいかということです.
助けてください
私の質問は次のとおりだと思います:1.データベースに挿入するための正しい情報を持っているのはどの印刷ステートメントですか?
編集:
utf8_decodeバージョンを挿入する必要があるという回答の1つによって提案されました(上記の ?? と !! のもの)
私は次のコードでそれをやった
$sql = "UPDATE myTable SET title='" . utf8_decode($yql_json_php["query"]["results"["h1"["content"]) . "' WHERE id='4'";
mysql_query("set names 'utf8'");
$result = mysql_query($sql);
ページを更新しましたが、まだ ?? として表示されます。と !!
漢字を Sequel Pro アプリケーションを介して表に直接貼り付けたところ、Web ページにデータを表示できました
だから私が持っているUPDATE sqlと関係があります...データベースはそれがutf8であることを認識していないようです