如何将CFDataRef转换为NSData

在做iOS开发中一个很常见的应用场景就是从服务器接收一段数据然后把它显示出来但是有时候服务器在数据处理时,比如拼接之类的操作会出一些问题,造成传过来的數据并不符合指定的编码(我碰到过的一种情况是,一段宣称用GB18030编码的文字中突然出现了几个用UTF8编码的词语)浏览器在处理这个问题時,一般就会出现乱码常用的编程语言在处理这个问题时,也是以乱码显示而ObjC的NSString则直接返回了一个nil。这一直让我比较头疼在旧版股吧的开发中曾经碰到因为接口返回的数据里面有一个字节是错的,导致整个接口返回的数据不能用了当时在国内几个网站上,得到的都昰一些不靠谱的回答

今天同事又遇到了这个问题,不过他找到了如何让UTF8编码的里面混有错误字节的数据以容错的方式显示出来而不是nil(见),其实原理很简单一个一个字节读过来,参照UTF8编码的说明判断是不是合法字节,如果不是用“?”来代替根据这段代码,峩改了一个用于GB18030编码的混有不合法字节的数据的容错转换

//可能是双字节,可能是四字节 //这是最后一个字节了但是这个字节表明后面应該还有1或3个字节,那么这个字节一定是错误字节 //是双字节并且可能合法 //这个双字节字符不合法,但byte2可能是下一字符的第一字节 // 第三位合法判断第四位 //这个四字节字符不合法,但是byte2可能是下一个合法字符的第一字节回退3位 // 第二字节不是合法的第二位,但可能是下一个合法的第一位所以回退一个byte
}
怎样实现zip文件与nsdata的相互转换发送端,我需要把zip文件转换称nsdata然后通过网络发送。接收端我需要把nsdata还原成zip文件。请问如何实现啊... 怎样实现zip文件与nsdata的相互转换?发送端我需要把zip文件转换称nsdata,然后通过网络发送接收端,我需要把nsdata还原成zip文件请问如何实现啊?

可以参考一下这哥们的东西:

你对这个回答的评价是

}

我要回帖

更多关于 cf吧 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信