Znakové sady a zařazování
Způsob, jakým char
jsou hodnoty, string
objekty a System.Text.StringBuilder
objekty zařazovány, závisí na hodnotě CharSet
pole na P/Invoke nebo struktuře. P/Invoke můžete nastavit CharSet
nastavením DllImportAttribute.CharSet pole při deklarování P/Invoke. Chcete-li nastavit typ, nastavte CharSet
StructLayoutAttribute.CharSet pole v deklaraci třídy nebo struktury. Pokud tato pole atributů nejsou nastavena, je na kompilátoru jazyka, který určí, který CharSet
použít. Jazyk C#, Visual Basic a F# ve výchozím nastavení používají None znakovou sadu, která má stejné chování jako Ansi znaková sada.
Pokud je použit System.Runtime.InteropServices.DefaultCharSetAttribute v modulu v kódu jazyka C# nebo Visual Basic, kompilátor jazyka C# nebo Visual Basic vygeneruje ve výchozím nastavení poskytnuté CharSet
místo použití CharSet.None
. Jazyk F# nepodporuje a DefaultCharSetAttribute
ve výchozím nastavení vždy generuje CharSet.None
.
Následující tabulka ukazuje mapování mezi jednotlivými znakovými sadami a způsob, jakým je znak nebo řetězec reprezentován při zařazování pomocí této znakové sady:
CharSet Hodnotu |
Windows | .NET Core 2.2 a starší v unixu | .NET Core 3.0 a novější a Mono v unixu |
---|---|---|---|
Ansi |
char (výchozí nastavení systémuZnaková stránka systému Windows (ANSI) |
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) |
Při výběru znakové sady se ujistěte, že víte, jakou reprezentaci vaše nativní reprezentace očekává.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro