मैं जानकारी खोने के बिना एक सी ++ std::string
यूटीएफ -8 या std::wstring
में परिवर्तित करने की कोशिश कर रहा हूं (एक स्ट्रिंग पर विचार करें जिसमें गैर-ASCII वर्ण हैं)।क्या एन्कोडिंग std :: string.c_str() का उपयोग करता है?
http://forums.sun.com/thread.jspa?threadID=486770&forumID=31 के अनुसार:
std :: स्ट्रिंग गैर- ASCII वर्ण है, तो आप एक समारोह है कि आपके एन्कोडिंग से UTF-8 में धर्मान्तरित प्रदान करनी चाहिए [...]
क्या एन्कोडिंग std::string.c_str()
उपयोग करता है? मैं इसे क्रॉस-प्लेटफ़ॉर्म फैशन में यूटीएफ -8 या std::wstring
में कैसे परिवर्तित कर सकता हूं?
तो अनिवार्य रूप से मेरे पास समय से पहले एन्कोडिंग को जानने के बिना std :: string को परिवर्तित करने का कोई तरीका नहीं है? मैं पूछता हूं क्योंकि मैं एक एपीआई फ़ंक्शन लिख रहा हूं जो std :: स्ट्रिंग में लेता है। मुझे लगता है कि दस्तावेज को उपयोगकर्ताओं को यह निर्देश देने की आवश्यकता होगी कि किस प्रारूप में पास होना है। – Gili
@Gili, दाएं: आप यूटीएफ -8 (या कुछ और ;-)) के अज्ञात एन्कोडिंग में बाइट अनुक्रम को विश्वसनीय रूप से परिवर्तित नहीं कर सकते हैं। मैं आपको कॉलर से यूटीएफ -8 डेटा की आपूर्ति करने के लिए कहता हूं - अधिकांश अन्य एन्कोडिंग एन्कोडिंग _every_ संभव यूनिकोड स्ट्रिंग को अनुमति नहीं देते हैं। जैसा कि @ नाफ कहते हैं, एएससीआईआई यूटीएफ -8 (और आईएसओ -885 9- * और कई अन्य एन्कोडिंग) का एक विशेष मामला है, इसलिए यदि आपका मामला कोई चिंता नहीं है (इस तथ्य के उपयोगकर्ताओं को याद दिलाने वाले दस्तावेज़ों में एक फुटनोट _them_ बचा सकता है चिंता ;-)। –
अच्छा जवाब, धन्यवाद :) – Gili