Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Unicode Transformation Format 8 bites (UTF-8) karakterkódolásával maximalizálhatja a webalkalmazások és más *nix-alapú platformok (Unix, Linux és változatok) közötti kompatibilitást, minimalizálhatja a honosítási hibákat, és csökkentheti a tesztelési többletterhelést.
Az UTF-8 a nemzetköziesítés univerzális kódlapja, amely képes a teljes Unicode-karakterkészlet kódolására. Széles körben használják a weben, és ez az alapértelmezett kódolás xml és *nix-alapú platformokon.
Folyamatkódlap beállítása UTF-8-ra
A Windows 1903-as verziójától (2019. májusi frissítés) megadhatja az activeCodePage tulajdonságot a csomagolt alkalmazások appxmanifestjében (vagy a csomagolatlan alkalmazások fúziós jegyzékében), hogy kényszerítse a folyamatot az UTF-8 folyamatkódlapként való használatára.
Megjegyzés:
A Windows grafikus eszköz felülete (GDI) jelenleg nem támogatja az activeCodePage tulajdonság beállítását folyamatonként. Ehelyett a GDI alapértelmezés szerint az aktív rendszerkódlapra van beállítva. Ha úgy szeretné konfigurálni az alkalmazást, hogy UTF-8-szöveget jelenítsen meg GDI-n keresztül, lépjen a Windows Beállítások>idő és nyelv>nyelv & régió>felügyeleti nyelvi beállításainak>módosítására, és ellenőrizze a bétaverziót: A Unicode UTF-8 használata a globális nyelvtámogatáshoz. Ezután indítsa újra a számítógépet a módosítás érvénybe lépéséhez.
Deklarálhatja az activeCodePage tulajdonságot, és megcélzhatja/futtathatja a korábbi Windows-buildeket, de a szokásos módon kell kezelnie a régi kódlapok észlelését és konvertálását. A Windows 1903-as verziójának minimális célverziója esetén a folyamatkód oldala mindig UTF-8 lesz, így elkerülhető a régi kódlapok észlelése és konvertálása.
Megjegyzés:
Az UTF-8-ban a kódolt karaktereket 1–4 bájtos sorozat jelöli. (A formális specifikációhoz lásd a Unicode Standard3. fejezetében található D92 definíciót.)
Példák
Appx-jegyzékcsomag egy csomagolt alkalmazáshoz:
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
...
xmlns:uap7="http://schemas.microsoft.com/appx/manifest/uap/windows10/7"
xmlns:uap8="http://schemas.microsoft.com/appx/manifest/uap/windows10/8"
...
IgnorableNamespaces="... uap7 uap8 ...">
<Applications>
<Application ...>
<uap7:Properties>
<uap8:activeCodePage>UTF-8</uap8:activeCodePage>
</uap7:Properties>
</Application>
</Applications>
</Package>
Fúziós jegyzék egy csomagolatlan Win32-alkalmazáshoz:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity type="win32" name="..." version="6.0.0.0"/>
<application>
<windowsSettings>
<activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
</windowsSettings>
</application>
</assembly>
Megjegyzés:
Adjon hozzá egy jegyzékfájlt egy meglévő végrehajtható fájlhoz a következő parancssorból mt.exe -manifest <MANIFEST> -outputresource:<EXE>;#1: .
-A és -W API-k
A Win32 API-k gyakran támogatják -A és -W változatokat is.
-A -A variánsok felismerik a rendszeren konfigurált ANSI-kódlapot és támogatják char*, míg a -W variánsok az UTF-16-ban működnek, és támogatják WCHAR.
A közelmúltig a Windows a "Unicode" -W változatokat helyezte előtérbe a -A API-kkal szemben. A legutóbbi kiadások azonban az ANSI kódlapját használták, és -A API-kat az UTF-8 alkalmazásokhoz való támogatásának bevezetéséhez. Ha az ANSI-kódlap az UTF-8-hoz van konfigurálva, akkor -A API-k általában az UTF-8-ban működnek. Ennek a modellnek az előnye, hogy kódmódosítások nélkül támogatja a -A API-kkal létrehozott meglévő kódot.
Kódlap konvertálása
Mivel a Windows natív módon működik az UTF-16-ban (WCHAR), előfordulhat, hogy az UTF-8 adatokat UTF-16-ra kell konvertálnia (vagy fordítva), hogy együttműködjön a Windows API-kkal.
A MultiByteToWideChar és a WideCharToMultiByte lehetővé teszi az UTF-8 és az UTF-16 () (WCHARés más kódlapok) közötti konvertálást. Ez különösen akkor hasznos, ha egy örökölt Win32 API esetleg csak a WCHAR-et érti meg. Ezek a függvények lehetővé teszik, hogy az UTF-8 bemenetet WCHAR formátumúvá alakítsa egy -W API-val való együttműködéshez, majd szükség esetén visszaalakítsa az eredményeket.
Amikor a dwFlags be van állítva 0-re, használja a MB_ERR_INVALID_CHARS vagy CodePage közül a CP_UTF8-t ezekkel a függvényekkel (ellenkező esetben ERROR_INVALID_FLAGS történik).
Megjegyzés:
CP_ACP Ez csak akkor felel meg, CP_UTF8 ha a Windows 1903-on (2019. májusi frissítés) vagy újabb verzión fut, és a fent leírt activeCodePage tulajdonság értéke UTF-8. Ellenkező esetben tiszteletben tartja az örökölt rendszerkódlapot. Javasoljuk, hogy a CP_UTF8 kifejezetten legyen használva.
Kapcsolódó témakörök
Windows developer