解决这个问题后,我懂得了一个经验:凡是遇到关于技术方面的问题,先去StackOverflow
上寻找。
先谈谈这个问题,使用Alamofire
请求页面数据,如下:
Alamofire.request(.GET, QJApi.QJVideo).validate().responseString(encoding: NSUTF8StringEncoding) { (response) -> Void in
print("\(response)")
}
其中,QJApi.QJVideo
代表的是.html
网址,结果控制台打印出的结果是:
FAILURE: Error Domain=com.alamofire.error Code=-6005 "String could not be serialized with encoding: 4" UserInfo={NSLocalizedFailureReason=String could not be serialized with encoding: 4}
当然,遇到这个问题先看一下网址写错没有,并没有啊。于是我拷贝错误信息,在百度(呵呵)上查找,什么cocoaChina
、tuicool
,虽有有类似的问题,但是好像都没有解决。我查看下网页源码,哎,竟然gb
编码,难怪iOS端使用NSUTF8StringCoding
发生错误
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
解决办法就在客户端也使用gb
编码,网上也有解答的:
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);
NSString * nsPropsDes = [NSString stringWithCString:prop.m_strPropsDes.c_str() encoding:enc];
尝试一番,发现并没有luan用,啊,啊,啊。。。。。
于是使用Dash
,于是在StackOverflow
上发现了方案,解决了问题:
Alamofire.request(.GET, QJApi.QJVideo).response { request, response, data, error in
if let data = data {
let cfEnc = CFStringEncodings.GB_18030_2000
let enc = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(cfEnc.rawValue))
let dogString:String = NSString(data: data, encoding: enc)! as String
print(dogString)
}
}