Swift Encode/decode emojis

一曲冷凌霜 提交于 2019-11-28 07:53:39

Your encoding code can be simplified to

func encode(_ s: String) -> String {
    let data = s.data(using: .nonLossyASCII, allowLossyConversion: true)!
    return String(data: data, encoding: .utf8)!
}

Note that it encodes all non-ASCII characters as \uNNNN, not only Emojis. Decoding is done by reversing the transformations:

func decode(_ s: String) -> String? {
    let data = s.data(using: .utf8)!
    return String(data: data, encoding: .nonLossyASCII)
}

This returns an optional because it can fail for invalid input.

Example:

let s = "Hello 😃."
let e = encode(s)
print(e) // Hello \ud83d\ude03.

if let d = decode(e) {
    print(d) // Hello 😃.
}

Of course you can also define the code as extension methods of the String type, and you might want to choose better function names.

I fixed this. If you have a server with encode utf8mb4, then for encoding emojis use this code:

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

DECODING:

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)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!