怎么把编码为 GB18030 的 UnsafePointer<Int8> 转换成 Swift 3 的字符串?

2016-10-15 23:37:39 +08:00
 xpol
我通过 C 库获得的字符串,结果类型在 Swift 3 里面是 UnsafePointer<Int8>,编码是 GB18030 或者是 WIndows 的 CP936 。怎么把这个字符串转换成 Swift 3 的字符串啊? String.Encoding 下面找不到对应 GB18030 或者 CP936 的值。
4301 次点击
所在节点    iDev
3 条回复
Andy00
2016-10-16 01:04:25 +08:00
Core Foundation 里有一个叫 CFStringEncodings 枚举,里面有 GB18030 的编码,你可以试试
具体详情见 http://stackoverflow.com/questions/29121906/how-to-change-gb-2312-encoding-to-utf-8
sobigfish
2016-10-16 01:44:31 +08:00
CP936 就是 GBK 么?
ls 贴的那个就可以了, GB18030 兼容 GBK
xpol
2016-10-16 09:34:29 +08:00
就是:

private static let GB_18030_2000 = String.Encoding(rawValue: CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(CFStringEncodings.GB_18030_2000.rawValue)))

好长。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/313073

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX