我正在处理这个问题。
我用alamofire发出了一个json请求,在json中有一些字符,比如u00b等,这是希腊语。
虽然当我打印字典时,我看不到像“αβγ”这样正确的字符串,但它们是unicode字符。
对于alamofire来说,哪种方法可以正确地将所有的文本统一到utf-8,这样我就可以打印出正确的字符??
下面的代码是我提出的请求。

func getManPerf() {
    Alamofire.request(baseurl, method: .get, parameters: ["action": "categories", "subaction": "getproducts", "category_id": "11", "limit": "0,30"]).responseJSON { (responseData) -> Void in
        if((responseData.result.value) != nil) {
            let result = responseData.result
            print(result)

            if let dict = result.value as? Dictionary<String, AnyObject>{
                if let list = dict["products_in_category"] as? [Dictionary<String, AnyObject>] {

                    for obj in list {
                        let manPerfumes = Products(productDict: obj)
                        self.manPerfumeData.append(manPerfumes)
                    }
                    DispatchQueue.main.async{
                        self.manPerfumeCV.reloadData()

                    }


                }
            }

        }
    }
}

我需要对我的代码做什么更改,以便它能给我带来正确的数据?谢谢!

最佳答案

在追加之前用UTF-8格式化字符串;)

let manPerfumesUTF = String(UTF8String: manPerfumes.cStringUsingEncoding(NSUTF8StringEncoding))

操场示例:
class Products {

    let _name : String

    init(productDict : [String : String]) {

        self._name = productDict["name"] ?? "error"
    }

}

let productDict = ["name" : "Hugo Boss"]
let productDictWithUTF8 = ["name" : "\u{03b2}\u{03b5}\u{03b5}\u{03c1}"]

let hugoBoss = Products(productDict: productDict)
let greekParfume = Products(productDict: productDictWithUTF8)
print(hugoBoss._name)      // Hugo Boss
print(greekParfume._name)  // βεερ

07-26 09:37
查看更多