यह एक संगतता सेटिंग है, जिसका उद्देश्य विरासत कोड के लिए है जो विंडोज के पुराने संस्करणों के लिए लिखा गया था जो यूनिकोड सक्षम नहीं थे। विंडोज 9एक्स परिवार में संस्करण, विंडोज एमई आखिरी और व्यापक रूप से अनदेखा था। "सेट नहीं" या "मल्टी-बाइट कैरेक्टर सेट का उपयोग करें" के साथ, सभी विंडोज एपीआई फ़ंक्शंस जो एक तर्क के रूप में स्ट्रिंग लेते हैं, उन्हें थोड़ा संगतता सहायक फ़ंक्शन को दोबारा परिभाषित किया जाता है जो char*
तारों को wchar_t*
स्ट्रिंग्स, एपीआई के मूल स्ट्रिंग प्रकार का अनुवाद करता है।
इस तरह का कोड गंभीर रूप से डिफ़ॉल्ट सिस्टम कोड पृष्ठ सेटिंग पर निर्भर करता है। कोड पेज 8-बिट वर्णों को यूनिकोड में मैप करता है जो फ़ॉन्ट ग्लाइफ का चयन करता है। आपका प्रोग्राम केवल सही टेक्स्ट उत्पन्न करेगा जब आपके कोड को चलाने वाली मशीन में सही कोड पृष्ठ होगा। यदि कोड पृष्ठ मेल नहीं खाता है तो अक्षरों का मूल्य> = 128 गलत हो जाएगा।
हमेशा आधुनिक कोड के लिए "यूनिकोड कैरेक्टर सेट का उपयोग करें" का चयन करें। विशेष रूप से जब आप दाएं से बाएं लेआउट वाले भाषाओं का समर्थन करना चाहते हैं और आपके पास अपनी dev मशीन पर एक अरबी या हिब्रू कोड पृष्ठ नहीं चुना गया है। अपने कोड में std::wstring
या wchar_t[]
का उपयोग करें। वास्तविक आरटीएल लेआउट प्राप्त करने के लिए CreateWindowEx()
कॉल में WS_EX_RTLREADING
शैली ध्वज को चालू करने की आवश्यकता है।
स्रोत
2012-02-19 15:04:37
बहुत खराब माइक्रोसॉफ्ट यूटीएफ -8 के लिए समर्थन जोड़ने से इंकार कर देता है – MarcusJ