String could not be serialized with encoding: 4

解决这个问题后,我懂得了一个经验:凡是遇到关于技术方面的问题,先去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}

当然,遇到这个问题先看一下网址写错没有,并没有啊。于是我拷贝错误信息,在百度(呵呵)上查找,什么cocoaChinatuicool,虽有有类似的问题,但是好像都没有解决。我查看下网页源码,哎,竟然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)

            }
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值