我是PHP的新手,我在Facebook / Twitter API中遇到了emojis的编码问题
数据进来了,我看到emojis表示如下:\ u2026
在json_decode之后,emojis看起来像这样:â€|
在我的网站上,他们看起来像是。
我想妥善处理它们,以便在网站上看到它们,或者最糟糕的情况就是将它们剥离出来。我找到了一个js表情符号库,如果我能以正确的格式获得表情符号,它可以提供帮助。 https://github.com/iamcal/js-emoji
推特代码如下:
$options = array( CURLOPT_HTTPHEADER => array("Authorization: $auth"),
//CURLOPT_POSTFIELDS => $postfields,
CURLOPT_HEADER => false,
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false);
$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);
$twitter_data = json_decode($json, true);
Facebook代码如下所示:
$requests = file_get_contents($request_url);
$fb_response = json_decode($requests);
$parseresponse = $fb_response->data;
$fbpost = "";
if (isset($parseresponse[0]->message))
{
$fbpost = $parseresponse[0]->message;
$fbpost = str_replace("’", "'", $fbpost);
}
检索API数据后,我将结果保存到mysql数据库,然后将mysql中的帖子显示到网站,以避免不必要的API调用。
如何让FB / Twitter API表情符号与https://github.com/iamcal/js-emoji一起使用?
答案 0 :(得分:1)
您肯定遇到了编码问题。我建议你尝试以下方法:
mb_internal_encoding("UTF-8");
// content retrieval
$fb_response = json_decode($requests, JSON_UNESCAPED_UNICODE);
另外你想要确保你运行php版本> = 5.2.0。希望它有所帮助。
答案 1 :(得分:0)
PHP库中有一个名为Emoji for php的emojis,它将为您处理转换,它非常易于使用。您可以在此处下载副本:
http://code.iamcal.com/php/emoji/
答案 2 :(得分:0)
\ u2026不是表情符号。它是一个省略号,看起来像…
:http://www.fileformat.info/info/unicode/char/2026/index.htm
然而,这绝对是一个多字节的角色。当它看起来像…
时,某些地方的编码错误。
尝试找到它破裂的地方。也许在去数据库的路上(或在回来的路上?)?注意一切都是相同的unicode编码(我猜你使用的是UTF8?),与数据库的连接以及数据库表/字段本身。
如果您直接打印字符串(所以在将它们保存到数据库之前),它们看起来不错吗?如果没有,请检查您网站上是否查看多字节字符(例如echo "…";
)?如果不是,您的页面可能根本不会呈现为UTF8?在这种情况下,请检查HTML和HTTP标头中的编码设置。
您可以通过执行以下操作来检查json_decode():
$json = json_decode('{"test":"\u2026"}');
var_dump($json->test === '…'); // should output boolean true
如果我在UTF8页面上输出省略号…
,如下所示,它看起来很好:
<html doctype>
<meta charset="utf-8">
…
</html>
但是,如果我将菜单中的编码更改为Western ISO-8859-1,我会得到您的…
。它至少显示unicode字符串被解释为ISO-8859-1。你玩过这个设置吗?