2011-12-26 10 views
27

मैं एक इमोजी \ue415 को smiling face with open mouth and cold sweat परिवर्तित आईओएस 5.आईओएस 5: एक इमोजी को एक यूनिकोड चरित्र में कैसे परिवर्तित करें?

में एक यूनिकोड चरित्र में बदलने के लिए उदाहरण के लिए, चाहते हैं।

मैं NSString Class Reference में पर गया।

आईओएस 4, NSUTF16BigEndianStringEncoding में और NSUTF32BigEndianStringEncoding मुझे <e415> और <0000e415>, क्रमशः, जो काफी मैं क्या चाहते हैं के करीब हैं दे दी है।

आईओएस 5 में, परिणाम अलग हैं। यह <d83dde04> और <0001f604> देता है।

आईओएस 5 में smiling face with open mouth and cold sweat के लिए मुझे \ue415 कैसे मिल सकता है? धन्यवाद।

उत्तर

14

\ue415 इमोजी के लिए विरासत एन्कोडिंग का हिस्सा है और कुछ जापानी वाहकों के लिए विशिष्ट है। सॉफ्टबैंक, एनटीटी और डोकोमो के सभी के अपने निजी इमोजी चरित्र सेट थे।

iOS 5 इमोजी चरित्र विमानों के लिए हाल में निर्दिष्ट यूनिकोड 6.0 समर्थन करने के लिए ले जाया गया है और <0001f604> कि चरित्र के लिए यूनिकोड कोड बिंदु है। इस संदर्भ के बारे में विकिपीडिया एंट्री एक EmojiSources.txt मैपिंग फ़ाइल है जिसे आपको मैपिंग करने के लिए उपयोग करने की आवश्यकता होगी यदि आपको वास्तव में पुराने निजी-उपयोग वाले वर्ण कोड प्राप्त करने की आवश्यकता है।

http://en.wikipedia.org/wiki/Emoji

+1

हाँ, मैं इमोजी की विरासत एन्कोडिंग का उपयोग करना चाहते हैं, क्योंकि ऐसा लगता है सावधान रहना चाहिए की तरह मेरे ऐप नहीं होगा नए यूनिकोड 6.0 के साथ काम करें, यह '\ ue415' पढ़ सकता है लेकिन' \ U0001f604' नहीं। क्या आप मुझे दिखा सकते हैं कि आपने प्रदान की गई _EmojiSources.txt_ मैपिंग फ़ाइल का उपयोग कैसे करें? – Protocole

+1

दूसरा 1 है http://arashnorouzi.wordpress.com/2011/08/31/adding-graphics-and-emoji-characters-to-apple-push-notifications/ – GameLoading

4

यदि आपका इमोजी एक राउंड ट्रिप नहीं लेता है (आईओएस से बैकएंड सर्वर और आईओएस पर वापस), तो आपको कोई समस्या नहीं होनी चाहिए IOS (कम से कम 4.2+) एन्कोडिंग को सही तरीके से संभालती है और आप ' टी कुछ भी करना है। लेकिन यदि आपका ऐप किसी सर्वर से सहभागिता करता है, तो क्या आपको संदेह है कि आपका सर्वर वापसी मूल्य गलत है? यानी जेसन ने गलत एन्कोड किया।

मैं एक ही समस्या थी, घंटे के लिए खुदाई के बाद और अंत में इस जवाब यह है कि मेरे लिए काम करता पाया: यदि आप अपने सर्वर के रूप में रेल का उपयोग कर रहे हैं, तो https://stackoverflow.com/a/8339255/1090945

, यह सब आप सब करने की ज़रूरत है। आईओएस/एक्सकोड में कुछ भी करने की ज़रूरत नहीं है, बस सर्वर पर यूटीएफ 8/16 एन्कोडिंग सामान किए बिना एनएसएसटींग पास करें।

पोस्टगेरे कोड को सही तरीके से स्टोर करता है, यह तब होता है जब आप अपने आईओएस क्लाइंट को जेसन प्रतिक्रिया भेजते हैं, मानते हैं कि आप जेसन प्रस्तुत करते हैं: @ मैसेज, जेसन एन्कोडिंग में समस्या है।

आप यदि इसे बाहर प्रिंट "{\" अपने कंसोल

test = {"smiley"=>"u{1f604}"} 

test.to_json

में के रूप में साधारण परीक्षण करके सांत्वना आप अपने पटरियों में json एन्कोडिंग समस्या हो रही है कि क्या परीक्षण कर सकते हैं स्माइली \ ": \" \ uf604 \ "}" (ध्यान दें कि 1 खो गया है), तो आपको यह समस्या है। और लिंक से पैच इसे ठीक कर देगा।

90

इस प्रयास करें:

  1. Convert इमोजी

    NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding]; 
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    
  2. बहुत आसान इमोजी

    NSData *data = [strEmo dataUsingEncoding:NSUTF8StringEncoding]; 
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding]; 
    
+1

आप इमोजी अक्षरों को सही प्रारूप में कैसे दिखा सकते हैं? –

+0

मुझे पात्रों को वापस पाने के लिए उत्तर जानने में दिलचस्पी है ... – fvisticot

+1

यह समाधान @ yadav के साथ एक साथ सभी आईओएस संस्करणों में बहुत अच्छी तरह से काम करता है। लेकिन मेरे पास एक विशिष्ट आवश्यकता है जिसे स्ट्रिंग को सर्वर पर संग्रहीत करना है और स्ट्रिंग खोज की अनुमति देता है। इस मामले में, गैर-इमोजी वर्णों को '\ u ..' में एन्कोड नहीं किया जाना चाहिए जो पूरे स्ट्रिंग को मानव-गैर-पढ़ने योग्य और मशीन को खोजने योग्य नहीं बनाता है। क्या केवल गैर-इमोजी वर्णों के लिए रूपांतरण करने का कोई तरीका है? –

7
को यूनिकोड में परिवर्तित करने

वापस करने के लिए कन्वर्ट करने के लिए यूनिकोड: -

UILabel में
NSData *newdata=[recievedstring dataUsingEncoding:NSUTF8StringEncoding 
allowLossyConversion:YES]; 
    NSString *mystring=[[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding]; 
7

dispalying इमोजी:

NSString *bellEmojiString = @"U+1F514"; 

label.text = [NSSting stringWithFormat:@"Table: %@", @"\U0001F514"]; 

आप 3 zero अंक के साथ + की जगह

+0

यह इमोजी स्ट्रिंग जैसे यू +26 एफ 5 के लिए काम नहीं करता है – Liangjun

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