为什么CFStringEncodings在Swift中没有UTF8?
我想在Swift中创build百分比编码的string,所以我可以安全地发送文本作为GET
请求。 我发现了一些Objective C代码,我试图将其转换为Swift。 我写了下面的Swift代码:
CFURLCreateStringByAddingPercentEscapes(nil, CFStringRef(encodedString), nil, CFStringRef("/%&=?$#+-~@<>|\\*,.()[]{}^!"), kCFStringEncodingUTF8)
在Swift中没有kCFStringEncodingUTF8
…如果你右键点击CFStringEncodings
源,你会发现里面有一百万个东西,但是没有UTF8。 我不明白。 如何在这种情况下使用UTF8string编码?
编辑:我发现了一种方法来编码一个string,但我仍然不明白发生了什么事kCFStringEncodingUTF8
UTF-8string编码定义为
enum CFStringBuiltInEncodings : CFStringEncoding { // ... case UTF8 /* kTextEncodingUnicodeDefault + kUnicodeUTF8Format */ // ... }
并可以作为
let orig = "a/b(c)" let escaped = CFURLCreateStringByAddingPercentEscapes(nil, orig, nil, "/%&=?$#+-~@<>|\\*,.()[]{}^!", CFStringBuiltInEncodings.UTF8.rawValue) println(escaped) // a%2Fb%28c%29
正如@Zaph在评论中提到的, stringByAddingPercentEncodingWithAllowedCharacters
可能更易于使用:
let charset = NSCharacterSet(charactersInString: "/%&=?$#+-~@<>|\\*,.()[]{}^!").invertedSet let escaped = orig.stringByAddingPercentEncodingWithAllowedCharacters(charset)
或者使用为URL编码创build字符集的预定义字符集之一。
kCFStringEncodingUTF8
已经在Swift中用UTF8
代替了。
在iOS7中添加了一个新的NSString
方法,它需要一个字符集和一些专门的字符集,当然你可以创build专门的字符集。 几乎没有理由再使用CFURLCreateStringByAddingPercentEscapes
。 看到这个:所以答案
- iOS在Swift中获取信号强度(核心电话)
- 如何禁用bar char的select?
- SFSafariViewController presentViewControlleranimation
- 在Swift3 iOS10中replaceCFURLCreateStringByAddingPercentEscapes?
- Swift:不能将types'Int16'的值转换为期望的参数types'AnyObject'?
- 无法从Objective-C pod访问快速类
- 如何获得另一个应用程序正在播放的audio
- 在Swift类中实现AsyncSocketcallback
- Firebasedynamic链接不适用于Safari浏览器