2015-10-06 34 views
5

Sto facendo un'applicazione di messing e quando invio un'emoji dal lato Android, mostra bene sul lato iOS, eppure iOS lato non può (sembra) visualizzare emoji dalla tastiera di iOS!Emoji non viene visualizzato in NSAttributedString quando viene digitato utilizzando la tastiera iOS, quando digitato su Android

L'etichetta in cui sto mostrando l'emoji utilizza testo attribuito e il testo proviene da HTML. Il codice seguente viene utilizzato per generare il NSAttributedString

var msg = getTextForDisplay()//Essentially gets the plain text 
msg = "<span style=\"font-family: Helvetica; font-size:14pt;\">" + msg + "</span>" 
if let data = msg.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false){ 
    let attributed = try? NSAttributedString(data: data, options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType ], documentAttributes: nil) 
    return attributed 
} 

Anche estraneo, quando si invia l'emoji da iOS, anche se non mostra nell'etichetta come descritto sopra, esse indicano sul lato Android perfettamente soddisfacente. Sul lato iOS, nell'etichetta, mostra quello che sembra essere jibberish

esempio (chasracters unicode forse?): enter image description here

Sono assolutamente sicuro che l'errore è con la visualizzazione del emoji, perché in fase di stampa per consolare, vedo le emoji reali e anche quando vengono salvate nella memoria del dispositivo e in seguito vengono lette su un Mac, è una vera emoji. Ma quando l'emoji è caricata nell'etichetta attribuita, mostra jibberish

Qualsiasi aiuto è apprezzato. Capisco che il problema riguardi la codifica Non sono sicuro di quale sia esattamente il problema e come risolverlo

+1

Si prega di condividere la funzione 'getTextForDisplay' troppo C'è un sacco di cose. che può andare storto quando si converte in/da vari formati di testo, specialmente se si passa in giro usando JSON. – Ben

+0

@Ben Restituisce letteralmente una stringa con pl un testo, ad es. "Ciao" –

+0

Solo una stringa hardcoded o una stringa importata da qualche altra parte? – Ben

risposta

2

Abbiamo verificato nei commenti che la stringa di origine è a posto. C'è solo un singolo parametro da cambiare! Swift di solito usa UTF-16 per le stringhe. Stai perdendo le informazioni elaborandole come UTF-8.

Cambio:

msg.dataUsingEncoding (NSUTF8StringEncoding

A:

msg.dataUsingEncoding (NSUTF StringEncoding

+0

Provalo ora –

+0

Ha funzionato! Grazie mille. Strano, non ci ho pensato perché ho commesso lo stesso errore in un'altra parte dell'app –