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


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.Nonehelyett. 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.