我正在尝试编码和解码表情符号,以便将它们发送到我的数据库中。
我用它来编码:
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
发布于 2017-05-28 22:38:34
您的编码代码可以简化为
func encode(_ s: String) -> String {
let data = s.data(using: .nonLossyASCII, allowLossyConversion: true)!
return String(data: data, encoding: .utf8)!
}
请注意,它将所有非ASCII码字符编码为\uNNNN
,而不仅仅是表情符号。
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
类型的扩展方法,并且您可能希望选择更好的函数名称。
发布于 2017-05-30 00:03:23
我解决了这个问题。如果您有一个带有编码utf8mb4的服务器,那么对于编码emoji,请使用以下代码:
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
}// comentario contains the emoji encoded
解码:
let data = comentarios.data(using: String.Encoding.utf8, allowLossyConversion: false)
if data != nil{
let valueunicode = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue) as? String
if valueunicode != nil{
comentarios = valueunicode!
}
}//comentarios contantes the deecode string(emoji)
https://stackoverflow.com/questions/44220794
复制相似问题