Una dintre primele companii care a implementat în mod constant Unicode a fost Microsoft - Windows NT a fost primul sistem de operare care a folosit Unicode în apelurile de sistem. A fost aleasă o reprezentare a caracterelor pe doi octeți ( UCS-2 ); începând cu Windows 2000 , este posibil să se reprezinte caractere de plan suplimentare folosind perechi de surogat UTF-16 .
Tranziția la Unicode a fost etapizată [1] :
Sistemele de operare Windows XP și Windows Server 2003 , ca și predecesorii lor Windows NT 4 și Windows 2000 , vin cu biblioteci de sistem care includ funcții de ambele tipuri: Unicode și concepute pentru a funcționa cu șiruri în pagina de coduri de sistem curentă , denumită în mod convențional pagina ANSI. În acest caz, sufixul W este folosit pentru a apela funcții Unicode (de la cuvântul wide „wide”, de exemplu, ), iar litera AlstrlenW() este folosită pentru a apela funcții ANSI (de exemplu, ). Drept urmare, atât programele care pot folosi Unicode, cât și programele mai vechi care nu pot funcționa simultan cu caractere din diferite limbi rulează pe familia Windows NT . Majoritatea funcțiilor ANSI sunt implementate ca wrapper-uri peste funcțiile Unicode corespunzătoare. Puteți utiliza doar simboluri care sunt acceptate de aceste programe. lstrlenA()
Windows CE a folosit doar UTF-16 încă de la primele versiuni, cu excepția unui număr mic de cazuri .
În 2001, Microsoft a lansat un supliment special pentru sistemele lor de operare mai vechi Windows 95 , Windows 98 și Windows Me . Suplimentul se numește stratul Unicode ( Microsoft Layer for Unicode , MSLU ) și oferă suport Unicode pe platformele mai vechi specificate. Acest program de completare include o bibliotecă dinamică unicows.dll (doar 240 KB ) care conține versiuni unicode (cele cu litera W la sfârșit) ale tuturor funcțiilor principale ale API-ului Windows . Ca rezultat, a devenit posibil să rulați atât programe vechi, cât și noi Unicode pe sisteme de operare Windows mai vechi.
Windows NT include funcția IsTextUnicode , care încearcă să determine statistic dacă un șir transmis conține text Unicode. Pentru texte foarte scurte, această funcție dă adesea un rezultat incorect. De exemplu, această funcție este utilizată de editorul de text standard Windows NT - Notepad la deschiderea fișierelor text, ceea ce a dat naștere la legende despre existența „ ouălor de Paște ” de următorul fel în el:
Mai eficiente sunt expresiile care constau în întregime din litere latine (de exemplu, „această aplicație se poate rupe”), deoarece în acest caz, dacă codificarea este recunoscută incorect, va fi afișată întreaga linie de krakozyabr . [2] .