2016-08-02 1 views
0

인코딩은 지구상에서 지옥입니다. 나는 정말로 바보 같아야한다.PHP Twitter API iconv() 및 mb_strtolower()를 사용하여 인코딩 문제

내 북마크 라이브러리를 만들기 위해 트위터에서 해시 태그를 추출 중입니다. 많은 twits 스페인어에 있기 때문에

$url = 'https://api.twitter.com/1.1/statuses/mentions_timeline.json'; 
$requestMethod = 'GET'; 
$getfield = '?count=200&include_rts=1&max_id=397109847755210753'; 
$twitterGET = new TwitterAPIExchange($settingsGET); 
$twitterPOST = new TwitterAPIExchange($settingsPOST); 
$jsonString = $twitterGET->setGetfield($getfield) 
     ->buildOauth($url, $requestMethod) 
     ->performRequest(); 
$json_arr = json_decode($jsonString, true); 

그들은 UTF-8에 인코딩하도록되어 내가 읽고에서 á

트위터와 같은 문자를 가지고,하지만 난 유니 코드 물건을 얻는 경우 메신저를 낮추기 위해 해시 태그 문자열을 변환 할 때 .

foreach ($json_arr as $mytwit) { 
    $twitText=$mytwit["text"]; 
    $twitHashTags=$mytwit["entities"]["hashtags"]; 
    foreach($twitHashTags as $tag){ 
     $tag=mb_strtolower($tag, 'UTF-8'); 
     $twitKeyWords[]=$tag; 
     echo $tag; 
    } 
    #==>outputs: tecnolog\u00edas 
} 

그래서 다음에 내가 인코딩이 무엇인지 추측하려고 내가 (아래 단지 한 많은 시도이다)이 아름다운 행성에 모든 가능한 인코딩에 사용할 수있는이 코드를보십시오 : 아래 코드를 참조

foreach($twitHashTags as $tag){ 
    $tag = iconv("ISO-8859-1", "UTF-8//IGNORE", $tag); 
    $tag=mb_strtolower($tag, 'UTF-8'); 
    $twitKeyWords[]=$tag; 
    echo $tag; 
} 
==>outputs: tecnolog\u00e3\u00adas (even worse, thanks) 

2 개의 질문이 있습니다.

  1. 하는 경우는, 왜 트위터는 예를 $twit["entities"]["bloody_encoding"]에 대한 같은 일부 필드에 윗의 인코딩을 지정하지 않는 문자열의 인코딩을 추측 개념적으로 불가능?

  2. 아무도 인형을위한 PHP- 트위터 인코딩 조언이 있습니까?

아, 내가이 마술을 시도했지만 불행히도 작동하지 않았다 : How to decode Unicode escape sequences like "\u00ed" to proper UTF-8 encoded characters?

+0

메시지 JSON입니까? –

+0

원래는 Twitter API의 JSON 이었지만 정규식 해시 태그와는 별도로 맞춤 태그를 사용했기 때문에 정규식을 사용했습니다. 예를 들어'_technology '와 같은 태그를 가질 수 있습니다. ''_computer technology; "''; ''끝에 공백을 포함하는 태그를 잡는 것에주의하십시오 ... – fartagaintuxedo

+0

오늘 json과 twit의 텍스트를 얻는 코드 쓰루를 보여주기 위해 오늘 내 질문을 편집 할 것입니다 – fartagaintuxedo

답변

1

나는 트위터가 당신에게 UTF-8 인코딩 된 데이터를 전송하지 않기 때문에이 그것을 보내는 것, 생각 ASCII 인코딩 (또는 유니 코드 이스케이프 시퀀스와) 유사한

https://twittercommunity.com/t/is-it-normal-to-have-u-escaped-unicode-text-in-text-field-of-json-response-or-you-actually-retrieves-utf-8-code/13047

당신은 당신이 만들고있어하고 있는지 여부를 당신이 existin을 사용하고 호출하는 API로, 나에게 당신이 무슨 일을하는지 좀 더 세부 사항을 줄 수 g 트위터 클라이언트 또는 SDK 또는 자신의 롤백 한 경우

+0

감사합니다/예, 오늘 json과 twit의 텍스트를 얻는 코드 트로프를 보여주기 위해 오늘 내 질문을 편집 할 것입니다. – fartagaintuxedo

+0

@Peter_Bailey 요청한 세부 정보로 내 질문을 업데이트했습니다. – fartagaintuxedo