Search code examples
swiftutf-8gb2312

How to change GB-2312 encoding to UTF-8


I use nsurlsession and received nsdata with GB-2312 encoding. How can I change the encoding from GB-2312 to UTF-8.

I tried this code

let enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)
var result = NSString(data: data, encoding:enc)!

but it has an error

Use of unresolved identifier 'kCFStringEncodingGB_18030_2000'


Solution

  • I solved this issue with using the concrete value of gb312 constant instead of the apple defined constant

    let enc = CFStringConvertEncodingToNSStringEncoding(0x0632);     
    let dogString:String = NSString(data: data, encoding: enc)!
    println(dogString)
    

    here is the better solution - and thanks for Daij-Djan's suggestion

    let cfEnc = CFStringEncodings.GB_18030_2000
    let enc = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(cfEnc.rawValue))
    let dogString:String = NSString(data: data, encoding: enc)!