NSData转NSString编码

7

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

   NSData *responceData = ....;

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

我应该如何获得正确的符号?
1个回答

17

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

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

NSData *responseData = ....;

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

responseString现在将会确切地符合您的期望。


+1 我不知道是否有内置的解决方案,但显然我更喜欢内置的解决方案而不是自己编写一个 :), 一旦我的答案被取消采纳,我会将其删除。 - Joe
是的,这个名字并不太明显它是什么,所以很多人不知道它的存在。 - BJ Homer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接