NSData转NSString的一个问题

hikui
  • 318

从服务器那里得到NSData,要把它转成String。现在碰到的困难是这样的:服务器那里不知道有什么bug,导致返回的Data里面编码不一致(一般情况下所有返回的都是用GB18030编码的,有Bug的情况下,一个data里面有一部分是GB18030编码,一部分是UTF8编码)。网页碰到这个问题时,把UTF8部分变成乱码了,而手机端用NSData直接转string的话,返回的时nil。我现在希望把正常的一部分正常显示,乱码的一部分乱码显示,而不是返回一个nil该怎么办呢?(因为我们的网页和android客户端是可以显示出来的,所以QA认定是我们iOS客户端的问题)。

回复
阅读 10.2k
3 个回答
✓ 已被采纳

不建议这样的做法,最好从根源上避免这种事情发生,坚持使用一致的编码。
如果一定要这样做的话,可以试一下修改报文格式,在头部分添加编码的起止字节数。

hwq101425
  • 1
新手上路,请多包涵

传的时候用base-64位传试一下

NSStringEncoding gbkEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

contents = [NSString stringWithContentsOfFile:path encoding:gbkEncoding error:nil];

试一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏