2015-10-06 9 views
5

पर टाइप किया जाता है तो मैं एक मैसेन्गिंग एप्लिकेशन बना रहा हूं और जब मैं एंड्रॉइड पक्ष से इमोजी भेजता हूं, तो यह आईओएस पक्ष पर ठीक दिखाता है, फिर भी आईओएस पक्ष आईओएस के अपने कीबोर्ड से इमोजी प्रदर्शित नहीं कर सकता है (ऐसा लगता है)!आईओएस कीबोर्ड का उपयोग करते समय इमोजी एनएसएट्रिब्यूटेड स्ट्रिंग में नहीं दिखता है, जब एंड्रॉइड

जिस लेबल में मैं इमोजी दिखा रहा हूं वह जिम्मेदार पाठ का उपयोग करता है और पाठ 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 
} 

यहां तक ​​कि अजनबी उत्पन्न करने के लिए जब मैं आईओएस से इमोजी भेज सकते हैं जैसा कि ऊपर वर्णित है, हालांकि यह लेबल में प्रदर्शित नहीं करता है प्रयोग किया जाता है। आईओएस ओर, वह लेबल में, यह पता चलता है कि jibberish प्रतीत होता है

जैसे (यूनिकोड chasracters शायद?): enter image description here

मैं बिल्कुल यकीन है कि त्रुटि इमोजी के प्रदर्शित, क्योंकि जब मुद्रित के साथ है कर रहा हूँ कंसोल करने के लिए, मैं असली इमोजी देखता हूं और डिवाइस स्टोरेज में सहेजा जाता है और बाद में मैक पर पढ़ता हूं, यह असली इमोजी है। लेकिन जब इमोजी को जिम्मेदार लेबल में लोड किया जाता है, तो यह जिबर्निश

किसी भी मदद की सराहना करता है। मैं समझता हूं कि समस्या एन्कोडिंग के साथ कुछ करने के लिए है, मुझे यकीन नहीं है कि वास्तव में समस्या क्या है और इसे कैसे ठीक किया जाए

+1

भी 'getTextForDisplay' समारोह साझा करें कुछ चीजें के बहुत सारे है। जो विभिन्न पाठ प्रारूपों में/से कनवर्ट करते समय गलत हो सकता है, खासकर यदि आप JSON का उपयोग कर गुजर रहे हैं। – Ben

+0

@Ben यह सचमुच एक स्ट्रिंग के साथ स्ट्रिंग देता है ऐन टेक्स्ट, उदाहरण के लिए "हैलो" –

+0

बस एक हार्डकोडेड स्ट्रिंग, या कहीं और से आयात की गई स्ट्रिंग? – Ben

उत्तर

2

हमने टिप्पणियों में सत्यापित किया है कि स्रोत स्ट्रिंग ठीक है। बदलने के लिए सिर्फ एक ही पैरामीटर है! स्विफ्ट आमतौर पर तारों के लिए यूटीएफ -16 का उपयोग करता है। आप यूटीएफ -8 के रूप में इसे प्रोसेसिंग की जानकारी खो रहे हैं।

बदलें:

msg.dataUsingEncoding (NSUTF8StringEncoding

करने के लिए:

msg.dataUsingEncoding (NSUTF StringEncoding

+0

अब कोशिश करें कि –

+0

यह काम करता है! बहुत बहुत धन्यवाद। अजीब मैंने इस बारे में नहीं सोचा क्योंकि मैंने ऐप के दूसरे हिस्से में भी यही गलती की थी –

संबंधित मुद्दे