본문 바로가기
IOS/IOS 스터디(Swift)

ios/Swift] Alamofire 통신 시 utf-8이 아닌 서버 통신 대응 방안(Unable to convert data to String)

by 김마리님 2022. 6. 8.

Alamofire을 통해 서버 통신을 하다가, 데이터가 한글일 때 Unable to convert data to String 오류를 마주했다. 알고보니 통신 중인 서버의 언어기반이 EUC-KR이지만, Swift의 기본 언어가 utf-8이기 때문에 해당 오류가 발생한다고 한다. 

 

다양한 Swift개발자들의 조언과 구글링을 통해 Alamofire의 Data 자료형을 utf-8 기반의 NSString자료형으로 변경하고, NSString을 다시 data로 변경하고, 이것을 json 형태로 변경하면 된다.

 

        do {
        //다른 기반의 서버를 쓰고 있다면 CFStringEncoing.EUC_KR 변경하기.
            var dataString = NSString(data: data, encoding: CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(CFStringEncodings.EUC_KR.rawValue)))
            var datadata = dataString!.data(using: String.Encoding.utf8.rawValue)
            
            let json = try JSONSerialization.jsonObject(with: datadata!, options: []) as! [String : Any]

            return json
        }
        catch let error as NSError {
            DLogUtil.debug(tag: #file, content: error)
            return [String : Any]()
        }
반응형