2

我正在构建一个与 Twitter API 交互的应用程序。

到目前为止,我的代码正确处理了响应,并且我对与搜索 API 交互的方式感到满意。然而,当谈到来自 Twitter API 响应的实际内容时,我被困住了。

现在,我使用 atom 提要搜索带有特定标签的推文,即

$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吗?我很迷失在这里。我多年来一直坚持这一点,非常感谢这里的一些帮助。

问候,

安德鲁

4

2 回答 2

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');
于 2012-06-03T15:18:18.207 回答
0

抢在这个职位

您可能想要搜索检测编码的方法。

于 2012-06-03T14:20:01.767 回答