Swift中GBK编码转换
程序员文章站
2022-03-31 19:17:47
...
import Foundation
extension String {
init?(gbkData: Data) {
//获取GBK编码, 使用GB18030是因为它向下兼容GBK
let cfEncoding = CFStringEncodings.GB_18030_2000
let encoding = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(cfEncoding.rawValue))
//从GBK编码的Data里初始化NSString, 返回的NSString是UTF-16编码
if let str = NSString(data: gbkData, encoding: encoding) {
self = str as String
} else {
return nil
}
}
var gbkData: Data {
let cfEncoding = CFStringEncodings.GB_18030_2000
let encoding = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(cfEncoding.rawValue))
let gbkData = (self as NSString).data(using: encoding)!
return gbkData
}
}
var str = "你好123"
print(str.gbkData.count)
上一篇: C++ 布尔类型和引用的用法详解