Charsets és rendező
Feljegyzé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+-os felhasználóknak érdemes megfontolni a használatát [LibraryImport]
. A beépített Roslyn-elemző (alapértelmezés szerint engedélyezve) a kódban lévő attribútumhoz [LibraryImport]
szükséges útmutatást nyújt.
Az értékek, string
objektumok és System.Text.StringBuilder
objektumok rendezési módja char
a P/Invoke vagy a CharSet
struktúra mező értékétől függ. A P/Invoke beállításához CharSet
állítsa be a mezőt a DllImportAttribute.CharSet P/Invoke deklarálásakor. Egy típus beállításához CharSet
állítsa be az osztály vagy a StructLayoutAttribute.CharSet szerkezet deklarációjának mezőjét. 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 modul c# vagy Visual Basic kódban van alkalmazva, akkor a C# vagy a Visual Basic fordító alapértelmezés szerint kibocsátja a megadott CharSet
értéket a használat CharSet.None
helyett. 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ódlap) |
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.