0

私はパブリック 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であることを認識していないようです

4

3 に答える 3

0
  1. $yql_json = iconv(in_charset, 'utf-8', $yql_json);

  2. header("コンテンツタイプ: text/html; charset=utf-8");

  3. Web ページ ビューのコーディング -> utf-8

于 2012-08-19T07:54:07.617 に答える
0

使ってみて

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

また

<?php header("Content-type: text/html; charset=utf-8");?>

これはあなたを助けるかもしれません。

于 2012-08-19T07:43:43.153 に答える
0

同様の問題に直面しました。基本的に、漢字を取得しています。しかし、印刷中、またはデータベースに保存している間、「?????」と表示される場合があります。. もう一度取得してブラウザで表示すると、漢字が表示されます。「????」を取り除くには データベースでは、データベース url で characterEncoding を定義し、character_set_result とその他のいくつかを utf8 に設定する必要があります。一方、アプリケーションをデバッグして watch で content の値を確認すると、実際には漢字が表示されます。これが役立つかどうか教えてください。

于 2012-08-19T07:46:52.463 に答える