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]()
}
반응형