-initWithData: encoding:返回nil的解决办法
来源:互联网 发布:ubuntu mendelay 编辑:程序博客网 时间:2024/05/22 23:56
方法:-initWithData: encoding: 是将一个NSData对象转换为NSString对象。
有时候,NSData非空,该方法却返回一个nil,而不是返回一个NSString对象。
究其原因,无非是NSData中含有非UTF-8编码的字符,导致转换失败。
下面给出一个解决办法:
首先导入libiconv.tdb库
#import <iconv.h>static NSData *ALUTF8NSData(NSData *data) { if (!data) return nil; const char *iconv_utf8_encoding = "UTF-8"; iconv_t cd = iconv_open(iconv_utf8_encoding, iconv_utf8_encoding); // 从utf8转utf8 int one = 1; iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, &one); // 丢弃不正确的字符 size_t inbytesleft, outbytesleft; inbytesleft = outbytesleft = data.length; char *inbuf = (char *)data.bytes; char *outbuf = malloc(sizeof(char) * data.length); char *outptr = outbuf; size_t icon = iconv(cd, &inbuf, &inbytesleft, &outptr, &outbytesleft); if (icon == 0) { NSData *result = [NSData dataWithBytes:outbuf length:data.length - outbytesleft]; iconv_close(cd); free(outbuf); return result; } return nil;}
NSData转NSString示例:
NSData *data = /***/;NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; if (!dataString) { // 解决NSData转化为NSString时,可能返回nil的情况 NSData *data = ALUTF8NSData(nsData); dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; }
阅读全文
0 0
- -initWithData: encoding:返回nil的解决办法
- iOS: NSString的方法initWithData:encoding:
- NSBundle mainBundle] pathForResource 返回nil的解决办法
- stringWithContentsOfURL:encoding:error方法返回nil
- iOS: NSData的方法initWithData:
- pathForResource返回nil的解决方法
- viewWithTag 返回 nil , viewWithTag的值为nil的原因
- 解决 pathForResource 返回 nil的问题
- 解决 pathForResource 返回 nil的问题
- 解决tableView cellForRowAtIndex 返回nil 的问题
- TableView的cell返回nil问题
- dateFromString永远返回nil的处理办法
- [iOS] 过滤后台返回nil的数据
- 使用SudzC生成ARC版Obj-C代码出现返回结果为nil的疑问与暂时解决办法
- Swift 3.0:String初始化器Encoding不能为nil的解决
- dequeueReusableCellWithIdentifier 总是返回nil
- dataWithContentsOfURL返回nil
- iOS-nil、Nil、NULL和NSNull区别详细说明(去除数据请求返回的null)
- 嵌入式linux设备驱动的一点感悟
- C语言中字符串的逆序、字符串转整数、整数转字符串、自定义字符串操作(strcpy、strlen、strcat、strcmp)
- 搬瓦工VPS洛杉矶MC机房KVM VPS简单测评/bandwagonhosMC机房KVM VPS测评
- 常用框架的介绍总结等
- 两个标签巧妙实现下图布局
- -initWithData: encoding:返回nil的解决办法
- 从gitHub下载源码后导入module后出现的问题是如下图所示的效果时,请按照本文提醒去做
- 【mysql 存储过程】存储过程之流程控制语句
- openssl编译arm移植及RSA_generate_key_ex的使用实例
- 金蝶EAS,数据中心密码翻译,数据库密码获取
- 今天碰到了一个tablayout的显示问题
- H5新特性汇总
- C++读取带空格字符串
- liunx contens7 下多站点配置