我使用的是公共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);
我通过php以以下格式打印返回的json
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 编码
基本上我还要问的是,我怎样才能在上面的打印语句中显示中文字符,因为如果我能做到这一点,这意味着我有正确的 utf-8 编码插入数据库。
请帮忙
我想我的问题是:1.哪个打印语句有正确的信息让我插入数据库?
编辑:
答案之一建议我应该插入 utf8_decode 版本(上面有 ?? 和 !! 的那个)
我用下面的代码做到了
$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应用程序将汉字直接粘贴到表格中,我可以在我的网页上显示数据
所以它与我拥有的UPDATE sql有关......数据库似乎不知道它是utf8