Lilo Lu Lilo Lu - 4 years ago 319
Swift Question

How to change GB-2312 encoding to UTF-8

I use

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'

Answer Source

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)!

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)!
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download