Alamofire 返回错误的编码

Posted

技术标签:

【中文标题】Alamofire 返回错误的编码【英文标题】:Alamofire returns wrong encoding 【发布时间】:2015-07-30 20:18:31 【问题描述】:

我正在使用

Alamofire.request(.GET, "http://")
        .responseString  _, _, string, _ in
            println(string)
    

发出获取请求。响应包含西里尔符号,在 responseString 中它们看起来像这样(右上角):

我应该如何修复编码?

【问题讨论】:

您是否可以提供一个测试 url 来表示这种行为?它可能会帮助那些试图回答您的问题的人。 好的,问题已解决 【参考方案1】:

您可以将NSUTF8StringEncoding 与Alamofire 的responseString 方法一起使用:

Alamofire.request(.GET, "http://my1test.ru/applejesus.php?task=getCategory&categoryNumber=1")
            .responseString(encoding: NSUTF8StringEncoding)  (request, response, string, error) -> Void in
                if let result = string 
                    println(result)
                
        

结果:

图片http://ipic.su/img/img7/fs/ProdukciyaApple.1438079721.png,标题Продукция Apple

【讨论】:

【参考方案2】:

现在,您必须改用responseString(encoding: String.Encoding.utf8)

【讨论】:

或者只是 .responseString(encoding: .utf8) 的简短版本:)

以上是关于Alamofire 返回错误的编码的主要内容,如果未能解决你的问题,请参考以下文章

Json 解析 Swift 3 Alamofire

Alamofire 编码无效URL

比较 alamofire 返回的错误对象

Swift 4 Alamofire 和编码 UIImage 的问题

Alamofire 和 PromiseKit 返回一个 Promise<[T]>

Alamofire 自定义参数编码