首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift编码/解码表情符号

Swift编码/解码表情符号
EN

Stack Overflow用户
提问于 2017-05-28 03:24:11
回答 2查看 10.6K关注 0票数 7

我正在尝试编码和解码表情符号,以便将它们发送到我的数据库中。

我用它来编码:

代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

发布于 2017-05-28 22:38:34

您的编码代码可以简化为

代码语言:javascript
运行
复制
func encode(_ s: String) -> String {
    let data = s.data(using: .nonLossyASCII, allowLossyConversion: true)!
    return String(data: data, encoding: .utf8)!
}

请注意,它将所有非ASCII码字符编码为\uNNNN,而不仅仅是表情符号。

代码语言:javascript
运行
复制
func decode(_ s: String) -> String? {
    let data = s.data(using: .utf8)!
    return String(data: data, encoding: .nonLossyASCII)
}

这会返回一个可选的,因为它可能会因为无效输入而失败。

示例:

代码语言:javascript
运行
复制
let s = "Hello ."
let e = encode(s)
print(e) // Hello \ud83d\ude03.

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

当然,您也可以将代码定义为String类型的扩展方法,并且您可能希望选择更好的函数名称。

票数 27
EN

Stack Overflow用户

发布于 2017-05-30 00:03:23

我解决了这个问题。如果您有一个带有编码utf8mb4的服务器,那么对于编码emoji,请使用以下代码:

代码语言:javascript
运行
复制
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

解码:

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44220794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档