7

我有一个从服务器接收消息的应用程序。这些消息可能包含西里尔字符。但是当我将接收到的数据转换为 NSString 时,我只获得“\u041c\u0430\u043a”符号而不是西里尔符号。

   NSData *responceData = ....;

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

我怎样才能得到正确的符号?

4

1 回答 1

17

有一个更简单的解决方案。

如果您的数据中有文字 unicode 转义序列(即\u041c\0430\043a作为纯 ASCII 字符,没有应用 unicode 转义),那么这不是该字符串的 UTF-8 编码。你想要NSNonLossyASCIIStringEncoding

NSData *responseData = ....;

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

responseString现在将完全符合您的预期。

于 2012-04-13T19:40:41.460 回答