iOS 8 और ओएस एक्स 10.10 में वहाँ है NSString
पर एक नया एपीआई:
ऑब्जेक्टिव-सी
+ (NSStringEncoding)stringEncodingForData:(NSData *)data
encodingOptions:(NSDictionary *)opts
convertedString:(NSString **)string
usedLossyConversion:(BOOL *)usedLossyConversion;
स्विफ्ट
open class func stringEncoding(for data: Data,
encodingOptions opts: [StringEncodingDetectionOptionsKey : Any]? = nil,
convertedString string: AutoreleasingUnsafeMutablePointer<NSString?>?,
usedLossyConversion: UnsafeMutablePointer<ObjCBool>?) -> UInt
अब आप कर सकते हैं ढांचा अनुमान लगाता है और मेरे अनुभव में वास्तव में अच्छा काम करता है!
हैडर से (प्रलेखन पल में विधि नहीं बताता है, लेकिन यह आधिकारिक तौर पर WWDC Session 204 (page 270) में उल्लेख किया गया था:
- सुझाव दिया स्ट्रिंग एन्कोडिंग की एक सरणी (इस सूची में 3 विकल्प निर्दिष्ट किए बिना, सभी स्ट्रिंग एन्कोडिंग पर विचार किया जाता है लेकिन सरणी में वाले लोगों की उच्च वरीयता होगी; इसके अलावा, सरणी में एन्कोडिंग का क्रम महत्वपूर्ण है: पहले एन्कोडिंग में सरणी में दूसरे की तुलना में अधिक प्राथमिकता है)
- एक सरणी स्ट्रिंग एन्कोडिंग का उपयोग न करें (इस सूची में स्ट्रिंग एन्कोडिंग सी नहीं होगी onsidered सभी)
- एक बूलियन यह बताते हैं कि केवल सुझाव दिया स्ट्रिंग एन्कोडिंग
- एक बूलियन का संकेत हानिपूर्ण की अनुमति है या विकल्प माना जाता विकल्प
- एक विकल्प है कि रहस्य के लिए substitude के लिए एक विशिष्ट स्ट्रिंग देता बाइट्स
- वर्तमान उपयोगकर्ता की भाषा
- एक बूलियन विकल्प का संकेत डेटा, विंडोज
द्वारा उत्पन्न होता है कि क्या अगर शब्दकोश में मूल्यों गलत प्रकार (उदाहरण के लिए है एनएसएस का मूल्य tringEncodingDetectionS सुझायाEncodingsKey एक सरणी नहीं है), एक अपवाद फेंक दिया जाता है।
यदि शब्दकोश में मान अज्ञात हैं (उदाहरण के लिए, सुझाए गए स्ट्रिंग एन्कोडिंग की सरणी में मान मान्य एन्कोडिंग नहीं है), मानों को अनदेखा कर दिया जाएगा।
उदाहरण (स्विफ्ट):
var convertedString: NSString?
let encoding = NSString.stringEncoding(for: data, encodingOptions: nil, convertedString: &convertedString, usedLossyConversion: nil)
तुम सिर्फ डीकोड स्ट्रिंग चाहते हैं और एन्कोडिंग के बारे में परवाह नहीं है, तो आप let encoding =
निकाल सकते हैं लगता है कि वहाँ एक कारण नहीं है की तरह क्यों यह है आधिकारिक अभी तक नहीं। मैंने इसे पीडीएफ एनएसडाटा एन्कोडिंग के साथ वापस कर दिया है -2147482362। – FireDragonMule
मुझे पूरा यकीन नहीं है कि अगर यह काम करने का इरादा है। एक पीडीएफ एक स्ट्रिंग नहीं है और इस विधि को 'NSData' से तारों के लिए एन्कोडिंग मिलती है। आपका इरादा क्या है? – HAS
मैं एनएसडीटा के रूप में एक एसडीके के माध्यम से एक पीडीएफ पुनर्प्राप्त कर रहा हूं। मुझे अभी वेबपेज में इसे प्रदर्शित करने में समस्याएं आ रही हैं क्योंकि मुझे नहीं पता कि एन्कोडिंग क्या है या यदि कोई एन्कोडिंग भी है। – FireDragonMule