swift字符串解码的问题

布谷鸟 发布于 2016/08/04 13:53
阅读 573
收藏 0

初步尝试swift,就遇到了一个问题,十多个小时仍然没有解决

这是测试代码

//print("Hello, World!")
let CONTEXT_LIST_URL:String = "http://192.168.0.218:8080/xxx/api/context/list";
let url:NSURL = NSURL(string: CONTEXT_LIST_URL)!
do{
    var data = try NSString(contentsOfURL: url, encoding: NSUTF8StringEncoding)
    print(data)
}
catch{
    let nsError = error as NSError
    print(nsError.localizedDescription)
}



异常信息

The file “list” couldn’t be opened using text encoding Unicode (UTF-8).
Program ended with exit code: 0



由于我的服务端测试环境是windows平台,输出的字符无法完全解析emoji的字符,导致部分内容出现乱码

乱码如下图

下图为可以正常编码




现在,我使用swift请求获取输出,将得到的NSData使用utf8的编码解析成字符串,非常令人苦恼的是,NSString在执行的过程中一旦遇到无法解析的编码,直接返回为nil?是否可以尝试逐个替换掉无法解析字符,想想效率太低不想尝试。有哪些方式可以忽略掉其中的非utf-8编码?或者有没有容错机制?

希望熟悉swfit的朋友能够帮到我,非常感谢!

加载中
1
e
earthdog
粗略看了下NSString的API文档,都是遇到无法正确解析的就返回错误,所以从swift端很难办。而且,通常从程序设计的角度来说,由接收端来进行容错处理本来就不合适,数据提供方都不能保证数据的正确性,你又怎么能够要求接收端来保证呢?所以,最好的办法还是从服务端修改吧。
布谷鸟
布谷鸟
感谢回复,我已经把服务端也迁移到MAC上了
0
宁音雨雾
宁音雨雾
不懂帮顶
布谷鸟
布谷鸟
谢谢
返回顶部
顶部