NSData到NSString编码

Meh*_*zor 7 encoding cocoa-touch ios

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

   NSData *responceData = ....;

   NSString* responceString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

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

BJ *_*mer 17

有一个更容易的解决方案.

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

NSData *responseData = ....;

NSString* responseString = [[NSString alloc] initWithData:responseData encoding:NSNonLossyASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)

responseString 现在将完全符合您的期望.