我有一个应用程序从服务器接收消息,这些消息可能包含西里尔字母。但是当我将接收到的数据转换为NSString时,我只得到"\u041c\u0430\u043a"符号,而不是西里尔字母。
NSData *responceData = ....;
NSString* responceString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
我应该如何获得正确的符号?
我有一个应用程序从服务器接收消息,这些消息可能包含西里尔字母。但是当我将接收到的数据转换为NSString时,我只得到"\u041c\u0430\u043a"符号,而不是西里尔字母。
NSData *responceData = ....;
NSString* responceString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
有一种更简单的解决方案。
如果您的数据中包含文字unicode转义序列(即,\u041c\0430\043a
作为纯ASCII字符,没有应用unicode转义),那么这不是该字符串的UTF-8编码。您需要使用NSNonLossyASCIIStringEncoding
。
NSData *responseData = ....;
NSString* responseString = [[NSString alloc] initWithData:responseData encoding:NSNonLossyASCIIStringEncoding];
responseString
现在将会确切地符合您的期望。