我正在构建一个与Twitter API交互的应用程序。
到目前为止,我的代码正确处理了响应,我对我与搜索API交互的方式感到满意。但是,当涉及Twitter API响应的实际内容时,我感到困惑。
现在,我使用原子搜索搜索具有特定hastags的推文,即
$url = 'http://search.twitter.com/search.atom?q='.urlencode($hash_tag) ;
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
$xml = curl_exec ($ch);
curl_close ($ch);
$twelement = new SimpleXMLElement($xml);
echo "<pre>";
foreach ($twelement->entry as $entry) {
echo($entry->author->name);
echo '<br />';
echo mb_detect_encoding($entry->author->name);
echo '<br />';
我一直在尝试不同的PHP函数来解码/转换为正确的字符编码,但不管我做什么,我总是输出错误的结果。
此代码的输出是:(划掉隐私权)
xxxxxx (xxxxx xxxxxxx)
ASCII
xxxx_xxxxx (Chinny ♥_♥)
UTF-8
kunlemyk ((˘̯˘ ) hardekhunley™)
UTF-8
xxxx_xxxxx (♥ify okwuosa♥)
UTF-8
xxx_xxxx (Call me DRO)
ASCII
为什么有些ASCII和一些UTF-8?我怎样才能确保它们是一致的。我可以将它们转换为ascii吗?我很丢失在这里。我已经坚持了很多年,并且非常感谢这里的一些帮助。
此致
安德鲁
答案 0 :(得分:2)
utf8是专门设计的,因此ascii是它的一个合适的子集。这样做是为了向后兼容。
检测编码的函数,通常在检查字节值后通过受过教育的猜测来完成。如果有问题的字符串只包含ascii字符,则可以将其命名为ascii或utf8。同样,这是因为ascii字符串是一个有效的utf8字符串。
调用纯粹的ascii字符串“ascii”更有意义,因为它更具体,而且在猜测时,如果你遇到的只是ascii字符,你只能确定它是ascii。如果字符串中至少有一个utf8字符,其余字符为ascii,则func应将其检测为utf8。但是,如果没有看到至少一个utf8字符,则调用字符串utf8将是错误的。
编辑 - 至于该怎么办?同样,ascii字符串是一个有效的utf8字符串,所以你应该使用utf8,因为这将适用于这两种类型。确保通过真实的http标头声明,而不是<meta
标签。
header('content-type:text/html;charset=utf-8');
答案 1 :(得分:0)
在this post处获取战利品。
您可能希望搜索检测编码的方法。