2017-12-29 18 views
0

Ich muss eine Nachricht an den Server senden, der Emojis enthält. Ich lese die Daten aus CoreData, speichere sie im Dictionary und konvertiere sie dann in das json-Format.JSON Serialize Emoji

Meine erste Wörterbuch hat folgenden Inhalt

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

ich es dann in JSON umwandeln folgenden Code verwenden

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) 
} 

Diese mich json Zeichenfolge folgende kehrt

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

Das Problem ist, Emojis sind nicht korrekt formatiert. In JSON wird es in ð¤ð konvertiert

Der Grund, den ich es brauche, ist, es an den Server zu senden, um die Nachricht zu speichern. Wie konvertiere ich Emoji in JSON String Format.

+0

Ich gehe davon aus, dass die Codierung ungeeignet ist ... –

Antwort

2

Das Problem ist, dass Sie versuchen, die String mit ASCII-Codierung zu initialisieren, in der Emojis nicht existiert. Sie sollten UTF-8 verwenden.

Sie sollten auch nicht NSString verwenden, da Sie eine String sowieso zurückgeben und keine NSString spezifische Funktionalität verwenden.

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

Ausgang:

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

ich erkannte schnell, nachdem die Fragen veröffentlichen. Und danke für den Tipp über String. –