Megosztás a következőn keresztül:


Karakterkészletek és összeállítás

Megjegyzés:

Az alábbi útmutató a használatra szolgál [DllImport] , és manuálisan kell követni a helyes eredmények érdekében. A .NET 7+ használók számára érdemes inkább a [LibraryImport] használatát megfontolni. A beépített Roslyn-elemző (alapértelmezés szerint engedélyezve) megadja a szükséges útmutatást a kód [LibraryImport] attribútumához.

A char értékek, string objektumok és System.Text.StringBuilder objektumok feldolgozási módja attól függ, hogy mi az értéke a CharSet mezőnek a P/Invoke vagy a struktúrában. A P/Invoke CharSet beállításához állítsa be a DllImportAttribute.CharSet mezőt a P/Invoke deklarálásakor. Egy típus beállításához állítsa be a CharSet mezőt az osztály vagy a szerkezet deklarációjában. Ha ezek az attribútummezők nincsenek beállítva, a nyelvfordító határozza meg, hogy melyiket CharSet használja. A C#, a Visual Basic és az F# alapértelmezés szerint a None karakterkészletet használja, amely ugyanazzal a viselkedéssel rendelkezik, mint a Ansi karakterkészlet.

Ha a System.Runtime.InteropServices.DefaultCharSetAttribute a C# vagy a Visual Basic modulban van alkalmazva, akkor a C# vagy a Visual Basic fordító alapértelmezés szerint a megadott CharSet-t bocsátja ki ahelyett, hogy a CharSet.None-t használná. Az F# nem támogatja a DefaultCharSetAttribute, és mindig alapértelmezés szerint bocsát ki CharSet.None .

Az alábbi táblázat az egyes karakterkészletek közötti leképezést mutatja be, valamint azt, hogy egy karakter vagy sztring hogyan jelenik meg az adott karakterkészlettel való rendezéskor:

CharSet érték Windows .NET Core 2.2 és korábbi a Unixon A .NET Core 3.0-s és újabb verziói és a Mono a Unixon
Ansi char (a rendszer alapértelmezett Windows (ANSI) kódlapja) char (UTF-8) char (UTF-8)
Unicode wchar_t (UTF-16) char16_t (UTF-16) char16_t (UTF-16)
Auto wchar_t (UTF-16) char16_t (UTF-16) char (UTF-8)

Győződjön meg arról, hogy a natív ábrázolás milyen ábrázolást vár el a karakterkészlet kiválasztásakor.