JSON序列化表情符号

问题描述 投票:0回答:1

我需要向包含emojis的服务器发送一条消息。我从CoreData读取数据,将其存储在字典中,然后将其转换为json格式。

我的初始字典有以下内容

["0": ["chat_token": "8g9nu0Z.a3", "message": "🤛👌", "user_id": "1242", "created": "2017-12-29 17:13:16"]]

然后我使用以下代码将其转换为JSON

do {
    let jsonData = try JSONSerialization.data(withJSONObject: resultDict, options: [])
    if let jsonText = NSString(data: jsonData, encoding: String.Encoding.ascii.rawValue) {
        return jsonText as String
    }
} catch let error {
    print(error)
}

这将返回json字符串

{"0":{"chat_token":"8g9nu0Z.a3","message":"ð¤ð","user_id":"34","created":"2017-12-29 17:13:16"}}

问题是表情符号没有正确格式化。在JSON中,它被转换为ð¤ð

我需要它的原因是将它发送到服务器来存储消息。如何将表情符号转换为json字符串格式。

json swift unicode emoji
1个回答
2
投票

问题是你试图用ASCII编码初始化String,其中emojis不存在。你应该使用UTF-8。

您也不应该使用NSString,因为您无论如何都要返回String并且没有使用任何NSString特定功能。

do {
    let jsonData = try JSONSerialization.data(withJSONObject: resultDict)
    if let jsonText = String(data: jsonData, encoding: .utf8) {
        return jsonText
    }
} catch let error {
    print(error)
}

输出:

"{"0":{"chat_token":"8g9nu0Z.a3","message":"🤛👌","user_id":"1242","created":"2017-12-29 17:13:16"}}"
© www.soinside.com 2019 - 2024. All rights reserved.