2012-04-13 114 views
7

我有一個從服務器接收消息的應用程序。 這些消息可能包含西里爾文字符。但是,當我將接收到的數據轉換爲NSString時,我只獲得「\ u041c \ u0430 \ u043a」符號而不是cyrrilic。NSData到NSString編碼

NSData *responceData = ....; 

    NSString* responceString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 

我該如何得到正確的符號?

回答

17

有一個更簡單的解決方案。

如果您的數據中包含字面unicode轉義序列(即,\u041c\0430\043a爲純ASCII字符,未應用unicode轉義),那麼這不是該字符串的UTF-8編碼。你想要NSNonLossyASCIIStringEncoding

NSData *responseData = ....; 

NSString* responseString = [[NSString alloc] initWithData:responseData encoding:NSNonLossyASCIIStringEncoding]; 

responseString現在正是你所期望的。

+0

+1不知道內置的解決方案,顯然更喜歡在本土的一個:),一旦我的答案不被接受,我將刪除它。 – Joe 2012-04-13 20:15:57

+0

是的,這個名字並沒有使它變得非常明顯,所以很多人不知道它。 – 2012-04-13 20:19:12