从Twitter Api获取未知字符

时间:2014-01-08 07:27:33

标签: php curl twitter unicode character-encoding

我正在使用 https://api.twitter.com/1.1/statuses/user_timeline.json Twitter api从某个特定帐户获取推文,并且除了使用其他语言而非英语推文外,所有推文都正确。

用于向Twitter发出请求的Php代码如下:

    $ch = curl_init();
         curl_setopt($ch,CURLOPT_POST,1);
         curl_setopt($ch,CURLOPT_POSTFIELDS,"grant_type=client_credentials");        
         curl_setopt($ch,CURLOPT_URL,$url);
         curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
         curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 5);
         curl_setopt($ch,CURLOPT_USERAGENT, "Tweet Fetcher PHP 0.0.1");
         curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);
         curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
         curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
         curl_setopt($ch,CURLOPT_HTTPHEADER,array('Authorization: '.$authType.'
 '.$authValue,'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'));
         $result = curl_exec($ch);
         curl_close($ch); 

获取推文结果

मेहनत और मोबाइल ने चमकाई

如何在正确的字符集中获取此字符串?

更新代码

$tweet = json_decode($result);

但结果相同

1 个答案:

答案 0 :(得分:0)

让我们来看看你得到的API响应。

https://apigee.com/snapshot/twitter?snapId=apigee-console-snapshots-1388552400000_03b4cb5a-7817-4eba-8e66-1d622deb8c27

{
  "created_at": "Wed Jan 08 10:02:49 +0000 2014",
  "id": 420858117375553540,
  "id_str": "420858117375553537",
  "text": "पंजाब ड्रग्स गिरोह में मंत्री बिक्रम मजीथीआ का नाम सामने आया। श्री राहुल गांधी ने इस बारे में बहुत पहले बताया था। http://t.co/TQHGZxALQU",
  "source": "web",
  "truncated": false,
  "in_reply_to_status_id": null,
 ...etc...

那里几乎没有错。 “text”是UTF-8,将由PHP正确处理。

可能发生的事情是您没有在页面上设置元标记以显示UTF-8。它可能设置为Windows Charset。

在页面顶部,使用类似

的内容
header('Content-Type: text/html; charset=utf-8');

强制输出为正确的编码。