मुझे एक utf-8 स्ट्रिंग को एक स्थानीय में बदलने की आवश्यकता हैमल्टीप्लेट रिकॉर्डर (लिनक्स, विंडोज) विधि के साथ मल्टीबीट एन्कोडिंग (cp1251)। हालांकि, मुझे एक मानक (अधिमानतः एसटीएल) विधि नहीं मिली, जो पहले परिवर्तित करने (उपयोग करने) को छोड़कर दोनों प्लेटफार्मों पर काम करती है std::codecvt
तथा std::locale
) utf-8 से विस्तृत वर्ण स्ट्रिंग और फिर विस्तृत स्ट्रिंग को स्थानीय स्ट्रिंग में बदलें क्या एक रूपांतरण के साथ ऐसा करने का कोई तरीका है?
उत्तर:
जवाब के लिए 0 № 1मानक पुस्तकालय में कुछ भी शामिल नहीं हैवह यही करेगा। सीधे नहीं कम से कम, और एक घटक है कि आप "की जरूरत है किसी भी सी ++ कार्यान्वयन में अभी तक लागू नहीं किया गया है: आप कोडेक के पहलुओं का उपयोग करेंगे जो utf-8 और UTF-16 या UTF-32 के बीच कनवर्ट कर सकते हैं और फिर फ़ंक्शन का उपयोग <cuchar>
हैडर को UTF-16 या UTF-32 से लोकल मल्टीबाइट एन्कोडिंग में बदलने के लिए।
चूंकि वह विकल्प उपलब्ध नहीं है, आपका सबसे अच्छा दांवया तो एक पोर्टेबल लाइब्रेरी का उपयोग करना है, या विभिन्न प्लेटफॉर्म विशिष्ट एपीआई का उपयोग करके रूपांतरण को लागू करना है, और उन सामान्य एपीआई के साथ लपेटें जिन्हें आप प्लेटफार्मों के माध्यम से उपयोग कर सकते हैं। आप विंडोज पर पॉज़िक्स प्लेटफॉर्म, और मल्टीबाइटटीडीडचेयर और वाइडचेरटोमोइल्टीबाइट पर लिबिकॉनव का उपयोग कर सकते हैं।