作者:如果阳光可以穿透心紧俏脏 | 来源:互联网 | 2023-02-02 18:19
我正在尝试编码和解码Emojis以将它们发送到我的数据库.
我用它来编码:
var comentario = String()
let data = Comment.data(using: String.Encoding.nonLossyASCII, allowLossyConversion: true)
if let data = data {
let emojiString = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String
comentario = emojiString
}
它有效.但现在我不知道如何解码表情符号.
这是编码类型--->\ud83d\ude1a
1> Martin R..:
您的编码代码可以简化为
func encode(_ s: String) -> String {
let data = s.data(using: .nonLossyASCII, allowLossyConversion: true)!
return String(data: data, encoding: .utf8)!
}
请注意,它不仅将所有非ASCII字符编码为\uNNNN
Emojis.通过反转变换来完成解码:
func decode(_ s: String) -> String? {
let data = s.data(using: .utf8)!
return String(data: data, encoding: .nonLossyASCII)
}
这将返回一个可选项,因为无效输入可能会失败.
例:
let s = "Hello ."
let e = encode(s)
print(e) // Hello \ud83d\ude03.
if let d = decode(e) {
print(d) // Hello .
}
当然,您也可以将代码定义为String
类型的扩展方法
,并且您可能希望选择更好的函数名称.