NSData到NSString编码
问题描述:
我有一个从服务器接收消息的应用程序。 这些消息可能包含西里尔文字符。但是,当我将接收到的数据转换为NSString时,我只获得“\ u041c \ u0430 \ u043a”符号而不是cyrrilic。NSData到NSString编码
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
现在正是你所期望的。
+1不知道内置的解决方案,显然更喜欢在本土的一个:),一旦我的答案不被接受,我将删除它。 – Joe 2012-04-13 20:15:57
是的,这个名字并没有使它变得非常明显,所以很多人不知道它。 – 2012-04-13 20:19:12