-
트위터 Twitter API (twitCurl) - 한글 처리Programming/twitterAPI 2010. 8. 30. 17:30반응형
* 트위터API(Twitter API) 사용방법 - Twitcurl
twitCurl을 사용하여 한글이 포함된 메시지를 트위터에 올리는 경우 아래 그림과 같이 한글이 깨진채로 표시가 됩니다.
원인은 트위터에서 지원하는 utf-8 형식으로 변환하지 않은 채로 글을 올려 발생하는 문제입니다.
관련페이지 : http://dev.twitter.com/pages/counting_characters
윈도우에서는 한글을 표현할때 CP949(CodePage949 또는 MS949 )형식을 사용하여 한글을 표현합니다. cp949는 euc-kr(ks_c_5601-1987)에서 표현하지 못하는 한글을 추가한 형식으로 euc-kr과 호환됩니다.
위와 같은 문제로 인해 트위터에 글을 올리는 경우 cp949 에서 utf-8로 변환한 후 글을 올리면 정상적으로 한글이 표시가 됩니다.
cp949에서 utf-8로 변환하는 방법은 크게 2가지가 있습니다. win32api를 이용하는 방법과 GNU iconv를 사용하는 방법입니다.
제 경우에는 iconv를 이용하여 변환을 하도록하겠습니다. win32api로 변환을 하시려면 아래 사이트를 참고하시면 됩니다.* WinAPI를 이용하여 cp949(ANSI) - utf8 인코딩을 변환하자! : http://marnitto.edogawa.kr/71
그리고 iconv 사용법은 아래 사이트를 참고하시면 됩니다.
* iconv library를 이용해서 euckr to utf-8 변환 : http://www.korone.net/bbs/board.php?bo_table=etc_misc&wr_id=160
#include "twitcurl.h" using namespace std; #include "iconv.h" bool cp949_to_utf8(const string& in, string& out) { iconv_t cd; bool ret = false; const char* pszIn; char* pszOut, *pos; size_t inLen, outLen; pszOut=NULL; cd = iconv_open("UTF-8","CP949"); if(cd == (iconv_t)(-1)) { return false; } inLen = in.length(); pszIn = in.c_str(); outLen = (inLen+1) * 2; pos = pszOut = (char*)calloc(outLen, sizeof(char)); if(!pszOut) goto clean; if(iconv(cd, &pszIn, &inLen, &pos, &outLen)==-1) goto clean; out = pszOut; ret = true; clean: iconv_close(cd); if(pszOut) free(pszOut); return ret; } int main(int argc, char* argv[]) { twitCurl twit; twit.setTwitterUsername(string("username")); twit.setTwitterPassword(string("password")); string utf8Msg; cp949_to_utf8("안녕하세요! 한글메시지입니다.", utf8Msg); twit.statusUpdate(utf8Msg); return 0; }
위와 같이 utf-8로 변환시킨 후 글을 올리면 아래 그림과 같이 이상없이 한글이 표시가 됩니다.
반응형'Programming > twitterAPI' 카테고리의 다른 글
트위터 twitter API 어플리케이션 등록하기 (2) 2010.09.07 트위터 twitter API Basic인증방식 8.31일자로 종료 (7) 2010.09.01 [C++] 트위터API(Twitter API) 사용방법 - Twitcurl (34) 2010.08.25