2015-10-06 91 views
5

我正在製作一個消息傳遞應用程序,當我從Android端發送表情符號時,它在iOS端顯示正常,但iOS方不能(似乎)從iOS自己的鍵盤顯示emojis!表情符號在使用iOS鍵盤輸入時不顯示在NSAttributedString中,在Android上鍵入時輸入

我在其中顯示錶情符號的標籤使用屬性文本,文本來自HTML。下面的代碼是用於生成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 
} 

即使陌生人,當我從iOS的發送表情符號,儘管它不會在標籤顯示如上述那樣,它只表示在Android側完全正常。在iOS方面,在標籤,它表明這似乎是jibberish

如(UNICODE chasracters吧?):enter image description here

我絕對相信錯誤是表情符號的顯示,因爲打印時到控制檯時,我會看到真正的表情符號,並且在保存到設備存儲器中並稍後在Mac上讀取時,它就是真正的表情符號。但是當表情符號被加載到屬性標籤時,它顯示亂碼

任何幫助表示讚賞。我知道這個問題是與編碼有關我只是不知道究竟是什麼問題,以及如何解決它

+1

也請分享 'getTextForDisplay' 功能還有很多事情。當轉換爲/來自各種文本格式時可能會出錯,特別是如果您使用JSON傳遞。 – Ben

+0

@Ben它實際上返回一個字符串與pl ain文本,例如「你好」 –

+0

只是一個硬編碼的字符串,或從其他地方導入的字符串? – Ben

回答

2

我們在評論中驗證源字符串是好的。只有一個參數需要更改! Swift通常使用UTF-16作爲字符串。您將丟失的信息作爲UTF-8處理。

變化:

msg.dataUsingEncoding(NSUTF8StringEncoding

要:

msg.dataUsingEncoding(NSUTF StringEncoding

+0

現在就試試 –

+0

它的工作!非常感謝。奇怪我沒有想到,因爲我在應用程序的另一部分犯了同樣的錯誤 –

相關問題