如何将GB-2312编码改为UTF-8

Lil*_* Lu 1 utf-8 gb2312 swift

我使用nsurlsession并接收了GB-2312编码的nsdata.如何将编码从GB-2312更改为UTF-8.

我试过这段代码

let enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)
var result = NSString(data: data, encoding:enc)!
Run Code Online (Sandbox Code Playgroud)

但它有一个错误

使用未解析的标识符'kCFStringEncodingGB_18030_2000'

Lil*_* Lu 6

我使用gb312常量的具体值而不是苹果定义的常量来解决这个问题

let enc = CFStringConvertEncodingToNSStringEncoding(0x0632);     
let dogString:String = NSString(data: data, encoding: enc)!
println(dogString)
Run Code Online (Sandbox Code Playgroud)

这是更好的解决方案 - 感谢Daij-Djan的建议

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

  • 糟糕的解决方案 - 不要使用魔术数字 - 做马丁R写的 (2认同)