String could not be serialized with encoding: 4

本文记录了使用Alamofire请求GB编码网页时遇到的问题及解决方案。通过StackOverflow找到正确的方法,在客户端同样使用GB编码解析,成功获取到正确的字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

            }
        }
自然环境是指地球上自然形成的各种自然要素、自然现象和自然条件的总和。它包括大气、水、土壤、生物等各种要素以及气候、地形、地势、地质、生物多样性等自然现象和自然条件。 自然环境对人类和其他生物的生存发展起着重要的作用。首先,自然环境提供了人类生存和发展所需的资源。比如,大气提供了氧气供人类呼吸,水源和土壤提供了人类饮用水和农作物种植的基础,生物为人类提供了食物和药物。 其次,自然环境对于维持生态平衡和保护生物多样性也至关重要。自然界中的各种生物都有其独特的地位和作用,它们之间相互依存、互相制约,构成了生态系统。生态系统的稳定和健康对于地球生态环境的平衡、物种的繁衍和生物的进化具有重要的意义。 然而,由于人类的活动,自然环境正遭受到破坏和威胁。过度开发和污染等行为导致了空气和水质污染、土地沙漠化、物种灭绝等问题。这些问题严重影响了生物圈的平衡和人类的生存条件。 因此,保护自然环境是每个人的责任。我们应该重视环境保护的重要性,从日常生活中做起。比如,减少使用一次性塑料制品、鼓励节约用水、推广可再生能源等。另外,政府应加大环境保护的力度,制定更加严格的法规和政策来保护自然环境,促进可持续发展。 总之,自然环境是人类生存和发展的基础,保护自然环境是每个人的责任。只有保护好自然环境,才能为人类提供良好的生存条件,实现可持续发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值