2012-06-03 6 views
2

Im создание приложения, которое взаимодействует с API Twitter.Работа с символами, закодированными ответы twitter

Пока мой код правильно обрабатывает ответы, и я доволен тем, как я взаимодействую с 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? im довольно потерял здесь. Я застрял на этом целую вечность и был бы очень признателен за помощь здесь.

С уважением,

Эндрю

+0

«Шаги» называются кодировкой. Просто позаботьтесь о том, чтобы вы сохраняли и правильно сигнализировали. Это все. – hakre

+0

Какую кодировку вывода вы используете на своей странице? Если это UTF-8, он должен работать без каких-либо дополнительных функций (особенно удалить вызов 'utf8_decode()'). –

+0

im использование magento community 1.7 edition, я думаю, это будет UTF-8. если я удаляю вышеуказанные функции и просто эхо вывод, он все еще содержит символы, которые я не распознаю. – activeDev

ответ

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'); 
0

Возьмите добычу на this post.

Возможно, вы захотите найти методы для обнаружения кодирования.

Смежные вопросы