Unicode in Microsoft Windows
माइक्रोसॉफ्ट अपने उत्पादों में यूनिकोड लागू करने वाली पहली कंपनियों में से एक थी। विंडोज एनटी पहला ऑपरेटिंग सिस्टम था जिसमें सिस्टम कॉल में "वाइड कैरेक्टर" का उपयोग किया गया था। शुरू में (अब अप्रचलित) यू. सी. एस.-2 एन्कोडिंग योजना का उपयोग करते हुए, इसे विंडोज 2000 से शुरू होने वाले चर-चौड़ाई एन्कोडिंग यू. टी. एफ.-16 में अपग्रेड किया गया था, जिससे सरोगेट जोड़े के साथ अतिरिक्त विमानों के प्रतिनिधित्व की अनुमति मिलती है। हालाँकि माइक्रोसॉफ्ट ने मई 2019 तक अपने एपीआई में यूटीएफ-8 का समर्थन नहीं किया था। 2019 से पहले, माइक्रोसॉफ्ट ने यू. टी. एफ.-16 (यानी. - डब्ल्यू एपीआई), लेकिन तब से विंडोज और एक्सबॉक्स (और इसके अन्य उत्पादों में) पर यूटीएफ-8 (कम से कम कुछ मामलों में) का उपयोग करने की सिफारिश की गई है, यहां तक कि यह भी कहा गया है कि "यूटीएफ-8 अंतर्राष्ट्रीयकरण के लिए सार्वभौमिक कोड पृष्ठ है [और] यूटीएफ-16 [.] एक अनूठा बोझ है जिसे विंडोज कोड पर रखता है जो कई प्लेटफार्मों को लक्षित करता है। [.] विंडोज इस अनूठे बोझ को दूर करने के लिए यूटीएफ-8 का समर्थन करने के लिए आगे बढ़ रहा है [जिसके परिणामस्वरूप] ऐप और गेम में कम अंतर्राष्ट्रीयकरण के मुद्दे हैं। " माइक्रोसॉफ्ट प्रलेखन की एक बड़ी मात्रा में यू. टी. एफ.-16 एन्कोडिंग को स्पष्ट रूप से संदर्भित करने के लिए "यूनिकोड" शब्द का उपयोग किया जाता है। यू. टी. एफ.-8 सहित अन्य कुछ भी, माइक्रोसॉफ्ट की पुरानी भाषा में "यूनिकोड" नहीं है (जबकि यू. टी. एफ.-8 और यू. टी. एफ.-16 दोनों यूनिकोड मानक के अनुसार यूनिकोड हैं, या के एन्कोडिंग/"परिवर्तन प्रारूप" हैं)। विभिन्न विंडोज परिवारों में विंडोज एन. टी. आधारित प्रणालियाँ वर्तमान विंडोज संस्करणों और सभी विंडोज एक्स. पी. और पूर्व विंडोज एन. टी. (3. x, 4.0) को सिस्टम पुस्तकालयों के साथ भेजा जाता है जो दो प्रकार के स्ट्रिंग एन्कोडिंग का समर्थन करते हैंः 16-बिट "यूनिकोड" (विंडोज 2000 के बाद से यू. टी. एफ.-16) और एक (कभी-कभी मल्टीबाइट) एन्कोडिंग जिसे "कोड पेज" कहा जाता है (या गलत तरीके से ए. एन. एस. आई. कोड पेज के रूप में संदर्भित)। 16-बिट फ़ंक्शनों में 'W' ("वाइड" से) के साथ प्रत्यय नाम होते हैं जैसे कि सेटविंडोटेक्स्टडब्ल्यू। कोड पेज ओरिएंटेड फंक्शन "एएनएसआई" के लिए प्रत्यय 'ए' का उपयोग करते हैं जैसे कि सेटविंडोटेक्स्टए (कुछ अन्य परंपराओं का उपयोग एपीआई के लिए किया गया था जिन्हें अन्य प्रणालियों से कॉपी किया गया था, जैसे कि _ डब्ल्यूएफओपेन/एफओपेन या डब्ल्यूसीएसएलएन/स्ट्रलेन)। यह विभाजन आवश्यक था क्योंकि सी सहित कई भाषाओं ने एक ही कार्य के लिए 8-बिट और 16-बिट स्ट्रिंग दोनों को पारित करने का एक स्वच्छ तरीका प्रदान नहीं किया था। माइक्रोसॉफ्ट ने संकलक को एक "यूनिकोड" स्विच प्रदान करके यूनिकोड को "पोर्टेबल" रूप से समर्थन देने का प्रयास किया, जो 'ए' से 'डब्ल्यू' इंटरफेस पर अनिर्धारित "जेनेरिक" कॉल को स्विच करता है और सभी स्ट्रिंग स्थिरांक को "वाइड" यूटीएफ-16 संस्करणों में परिवर्तित करता है। यह वास्तव में काम नहीं करता है क्योंकि यह स्ट्रिंग स्थिरांक के बाहर UTF-8 का अनुवाद नहीं करता है, जिसके परिणामस्वरूप कोड होता है जो फ़ाइलों को खोलने का प्रयास करता है लेकिन संकलन नहीं करता है। इससे पहले, और "यूनिकोड" स्विच से स्वतंत्र, विंडोज ने मल्टीबाइट कैरेक्टर सेट (एम. बी. सी. एस.) ए. पी. आई. स्विच भी प्रदान किया। यह कुछ कार्यों को बदल देता है जो एम. बी. सी. एस. में काम नहीं करते हैं जैसे कि स्ट्र्रेव से एम. बी. सी. एस.-जागरूक जैसे _ एम. बी. एस. आर. ई. वी.। विंडोज सी. ई. (अब बंद) विंडोज सी. ई. में, यू. टी. एफ.-16 का उपयोग लगभग विशेष रूप से किया गया था, जिसमें 'ए' ए. पी. आई. ज्यादातर गायब था। ए. एन. एस. आई. ए. पी. आई. का एक सीमित सेट विंडोज सी. ई. 5 में उपलब्ध है, जिसका उपयोग स्थानों के एक कम सेट पर किया जा सकता है जिसे रनटाइम छवि पर चुनिंदा रूप से बनाया जा सकता है। विंडोज 9x 2001 में, माइक्रोसॉफ्ट ने माइक्रोसॉफ्ट के पुराने विंडोज 9x सिस्टम के लिए एक विशेष पूरक जारी किया। इसमें एक गतिशील लिंक लाइब्रेरी शामिल है, 'unicows.dll', (केवल 240 KB) जिसमें विंडोज API के सभी बुनियादी कार्यों का 16-बिट स्वाद (अंत में W अक्षर वाला) होता है। यह केवल एक अनुवाद परत हैः सेटविंडोटेक्स्टडब्ल्यू बस वर्तमान कोडपेज का उपयोग करके अपने इनपुट को परिवर्तित करेगा और सेटविंडोटेक्स्टए पर कॉल करेगा। यू. टी. एफ.-8 माइक्रोसॉफ्ट विंडोज (विंडोज एक्स. पी. और उसके बाद के) में यू. टी. एफ.-8, कोड पेज 65001 या सी. पी. _ यू. टी. एफ. 8 के लिए नामित एक कोड पेज है। लंबे समय तक, स्थानीय कोड पृष्ठ को 65001 पर सेट करना असंभव था, जिससे यह कोड पृष्ठ केवल (ए) मल्टीबाइट टू वाइडचार जैसे स्पष्ट रूपांतरण कार्यों और/या (बी) यूटीएफ-8 और यूटीएफ-16 के बीच एसटीडीआईएन/आउट का अनुवाद करने के लिए विन32 कंसोल कमांड सीएचसीपी 65001 के लिए उपलब्ध था। इसका मतलब यह था कि "संकीर्ण" कार्य, विशेष रूप से fopen (जो फ़ाइल खोलता है), को UTF-8 स्ट्रिंग्स के साथ कॉल नहीं किया जा सकता था, और वास्तव में fopen का उपयोग करके सभी संभावित फ़ाइलों को खोलने का कोई तरीका नहीं था, इससे कोई फर्क नहीं पड़ता कि लोकेल को किस पर सेट किया गया था और/या स्ट्रिंग में कौन से बाइट्स लगाए गए थे, क्योंकि उपलब्ध स्थानों में से कोई भी सभी संभावित UTF-16 वर्णों का उत्पादन नहीं कर सकता था। यह समस्या अन्य सभी एपीआई पर भी लागू होती है जो 8-बिट स्ट्रिंग लेते हैं या वापस करते हैं, जिसमें विंडोज वाले जैसे कि सेटविंडोटेक्स्ट शामिल हैं। जो प्रोग्राम यू. टी. एफ.-8 का उपयोग करना चाहते थे, विशेष रूप से कोड जो अन्य ऑपरेटिंग सिस्टम के लिए पोर्टेबल होना चाहते थे, उन्हें इस कमी के लिए एक वर्कअराउंड की आवश्यकता थी। सामान्य कार्य था फ़ाइलों को खोलने के लिए नए कार्यों को जोड़ना जो मल्टीबाइट टू वाइडचार का उपयोग करके यू. टी. एफ.-8 को यू. टी. एफ.-16 में परिवर्तित करते हैं और फोपेन के बजाय "वाइड" फ़ंक्शन को कॉल करते हैं। दर्जनों बहु-मंच पुस्तकालयों ने विंडोज पर इस रूपांतरण को करने के लिए रैपर कार्यों को जोड़ा (और अन्य पर अपरिवर्तित के माध्यम से यू. टी. एफ.-8 को पारित किया), एक उदाहरण बूस्ट के लिए एक प्रस्तावित जोड़ है। एक अन्य लोकप्रिय कार्य नाम को 8.3 फ़ाइल नाम के समतुल्य में बदलना था, यह आवश्यक है यदि फोपेन एक पुस्तकालय के अंदर है। इनमें से किसी भी समाधान को अच्छा नहीं माना जाता है, क्योंकि उन्हें गैर-विंडोज पर काम करने वाले कोड में बदलाव की आवश्यकता होती है। अप्रैल 2018 (या संभवतः नवंबर 2017) में, विंडोज 10 के लिए इनसाइडर बिल्ड 17035 (नॉमिनल बिल्ड 17134) के साथ, स्थानीय कोड पृष्ठ को यूटीएफ-8 पर सेट करने के लिए एक "बीटाः दुनिया भर में भाषा समर्थन के लिए यूनिकोड यूटीएफ-8 का उपयोग करें" चेकबॉक्स दिखाई दिया। यह यू. टी. एफ.-8 स्ट्रिंग्स के साथ फोपेन और सेटविंडोटेक्स्टए सहित "संकीर्ण" कार्यों को कॉल करने की अनुमति देता है। हालाँकि यह एक सिस्टम-वाइड सेटिंग है और एक प्रोग्राम यह नहीं मान सकता कि यह सेट है। मई 2019 में, माइक्रोसॉफ्ट ने कोड पेज को स्वयं यूटीएफ-8 पर सेट करने के लिए एक प्रोग्राम की क्षमता को जोड़ा, जिससे गैर-विशेषज्ञ उपयोगकर्ताओं द्वारा यूटीएफ-8 का उपयोग करने के लिए लिखे गए प्रोग्रामों को चलाने की अनुमति मिली। माइक्रोसॉफ्ट अनुशंसा करता है कि प्रोग्रामर यू. टी. एफ.-8 का उपयोग करें। विंडोज और एक्सबॉक्स पर किसी भी अन्य 8-बिट एन्कोडिंग के बजाय), और यूटीएफ-16 के बजाय इसके उपयोग की सिफारिश की जा सकती है, यहां तक कि यह भी कहा जा सकता है कि "यूटीएफ-8 अंतर्राष्ट्रीयकरण के लिए सार्वभौमिक कोड पृष्ठ है [और] यूटीएफ-16 [.] एक अनूठा बोझ है जिसे विंडोज कोड पर रखता है जो कई प्लेटफार्मों को लक्षित करता है।" ऐसा प्रतीत होता है कि माइक्रोसॉफ्ट यू. टी. एफ.-8 में संक्रमण कर रहा है, यह कहते हुए कि उसने पहले अपने विकल्प पर जोर दिया था, और विंडोज 11 में कुछ सिस्टम फ़ाइलों को यू. टी. एफ.-8 का उपयोग करने की आवश्यकता होती है और उन्हें बाइट ऑर्डर मार्क की आवश्यकता नहीं होती है। नोटपैड अब बिना बाईट ऑर्डर मार्क के यू. टी. एफ.-8 को पहचान सकता है, और बिना बाईट ऑर्डर मार्क के यू. टी. एफ.-8 लिखने के लिए कहा जा सकता है। कुछ अन्य माइक्रोसॉफ्ट उत्पाद आंतरिक रूप से यूटीएफ-8 का उपयोग कर रहे हैं, जिसमें विजुअल स्टूडियो और उनके एसक्यूएल सर्वर 2019 शामिल हैं, जिसमें माइक्रोसॉफ्ट का दावा है कि यूटीएफ-8 के उपयोग से गति में 35 प्रतिशत की वृद्धि हुई है और भंडारण आवश्यकताओं में लगभग 50 प्रतिशत की कमी आई है। प्रोग्रामिंग प्लेटफॉर्म माइक्रोसॉफ्ट के संकलक अक्सर यू. टी. एफ-8 स्रोत फ़ाइलों से यू. टी. एफ-8 स्ट्रिंग स्थिरांक का उत्पादन करने में विफल हो जाते हैं। सबसे विश्वसनीय तरीका UNICODE को बंद करना है, इनपुट फ़ाइल को UTF-8 के रूप में चिह्नित नहीं करना है। बी. ओ. एम.) का उपयोग न करें, और स्ट्रिंग स्थिरांक को यू. टी. एफ.-8 बाइट्स के साथ व्यवस्थित करें। यदि एक बी. ओ. एम. जोड़ा गया था, तो एक माइक्रोसॉफ्ट संकलक स्ट्रिंग्स की व्याख्या यू. टी. एफ.-8 के रूप में करेगा, उन्हें यू. टी. एफ.-16 में परिवर्तित करेगा, फिर उन्हें वर्तमान स्थान में वापस परिवर्तित करेगा, इस प्रकार यू. टी. एफ.-8 को नष्ट कर देगा। बी. ओ. एम. के बिना और एकल-बाइट लोकेल का उपयोग करते हुए, माइक्रोसॉफ्ट संकलक बाइट्स को एक उद्धृत स्ट्रिंग में अपरिवर्तित छोड़ देंगे। आधुनिक प्रणालियों में कोड पृष्ठ को यू. टी. एफ.-8 पर सेट करने से काफी मदद मिलती है, लेकिन अमान्य बाइट अनुक्रम अभी भी संरक्षित नहीं हैं (इसका उपयोग इसके आसपास काम कर सकता है)। यह भी देखें कि बुश ने तथ्यों को छुपाया, एक पाठ एन्कोडिंग मोजीबेक नोट्स संदर्भ बाहरी लिंक यूनिकोड माइक्रोसॉफ्ट विंडोज