我正在開發iOS應用程序,這將需要一個蠢特夫婦從Twitter, 我使用以下API加密Twitter的飼料
問題在阿拉伯語, 有飼料也就是說文本飼料出現類似這樣的
\ u0623 \ u0646 \ u0643 \ u0648 \ u0627 \ u0647 \ u0645
如何獲得真實文本(或如何對其進行編碼以獲得真實文本)?
我正在開發iOS應用程序,這將需要一個蠢特夫婦從Twitter, 我使用以下API加密Twitter的飼料
問題在阿拉伯語, 有飼料也就是說文本飼料出現類似這樣的
\ u0623 \ u0646 \ u0643 \ u0648 \ u0627 \ u0647 \ u0645
如何獲得真實文本(或如何對其進行編碼以獲得真實文本)?
這沒有加密,它是unicode。代碼0600 - 06ff是阿拉伯語。 NSString處理unicode。
下面是一個例子:
NSString *string = @"\u0623\u0646\u0643 \u0648\u0627\u0647\u0645";
NSLog(@"string: '%@'", string);
的NSLog輸出:
字符串: 'أنكواهم'
唯一的問題是什麼問題,你看到的,是你獲取阿拉伯文字?您是否在使用NSJSONSerialization
來反序列化JSON
?如果是的話,應該沒有問題。
這裏是問題URL(不要在生產中使用的代碼同步請求)的例子:
NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&count=2&screen_name=TareqAlSuwaidan"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
NSArray *jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
NSDictionary *object1 = [jsonObject objectAtIndex:0];
NSString *text = [object1 objectForKey:@"text"];
NSLog(@"text: '%@'", text);
的NSLog輸出:
text: '@Naser_Albdya أيدت الثورة السورية منذ بدايتها وارجع لليوتوب واكتب(سوريا السويدان)
這些是Unicode文字。我想認爲只需要使用NSString
的stringWithUTF8String:
方法就可以了。這應該使用NSString
的本地Unicode處理將文字轉換爲實際字符。例如:
NSString *directFromTwitter = [twitterInterface getTweet];
// directFromTwitter contains "\u0623\u0646\u0643 \u0648\u0627\u0647\u0645"
NSString *encodedString = [NSString stringWithUTF8String:[directFromTwitter UTF8String]];
// encodedString contains "أنك واهم", or something like it
轉換呼叫([directFromTwitter UTF8String]
)內的方法調用以訪問字符串的原始字節,由stringWithUTF8String
使用。我並不完全確定這些代碼點是什麼,我只是依靠Python來完成轉換。
感謝CocoaFu先生,它工作得很好:) – Adel 2012-02-12 13:48:03