2012-04-13 14 views
7

मेरे पास एक ऐसा एप्लिकेशन है जो सर्वर से संदेश प्राप्त करता है। उन संदेशों में सिरिलिक वर्ण हो सकते हैं। लेकिन जब मैं प्राप्त डेटा को एनएसएसटींग में बदलता हूं तो मुझे साइरिलिक के बजाय केवल "\ u041c \ u0430 \ u043a" प्रतीक प्राप्त होते हैं।एनएसडीएटी एनएसएसटींग एन्कोडिंग

NSData *responceData = ....; 

    NSString* responceString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 

मुझे सही प्रतीकों कैसे मिल सकते हैं?

उत्तर

17

एक बहुत आसान समाधान है।

यदि आपके डेटा में शाब्दिक यूनिकोड एस्केप अनुक्रम हैं (यानी \u041c\0430\043a शुद्ध ASCII वर्णों के रूप में, कोई यूनिकोड एस्केपिंग लागू नहीं है), तो यह उस स्ट्रिंग का यूटीएफ -8 एन्कोडिंग नहीं है। आप NSNonLossyASCIIStringEncoding चाहते हैं।

NSData *responseData = ....; 

NSString* responseString = [[NSString alloc] initWithData:responseData encoding:NSNonLossyASCIIStringEncoding]; 

responseString अब आप वही होंगे जो आप उम्मीद करते हैं।

+0

+1 किसी अंतर्निहित समाधान के बारे में नहीं पता था और जाहिर है कि एक घर के ऊपर एक पसंद है :), एक बार मेरा जवाब अस्वीकार्य हो जाने पर मैं इसे हटा दूंगा। – Joe

+0

हाँ, नाम यह स्पष्ट नहीं करता है कि यह क्या है, इसलिए बहुत से लोगों को इसके बारे में पता नहीं है। –

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