Aracılığıyla paylaş


Karakter kümesi ve hazırlama

Not

Aşağıdaki kılavuz kullanım içindir [DllImport] ve doğru sonuçlar için el ile izlenmesi gerekir. .NET 7+ kullanıcıları bunun yerine kullanmayı [LibraryImport] düşünmelidir. Yerleşik Roslyn çözümleyicisi (varsayılan olarak etkindir), kodunuzdaki [LibraryImport] öznitelik için gerekli yönergeleri sağlar.

char Değerlerin, string nesnelerin ve System.Text.StringBuilder nesnelerin nasıl sıralandığı P/Invoke veya yapısındaki alanın değerine CharSet bağlıdır. P/Invoke'unuzu bildirirken alanı ayarlayarak DllImportAttribute.CharSet P/Invoke değerini ayarlayabilirsinizCharSet. Türünü ayarlamak CharSet için sınıfınızdaki veya yapı bildiriminizdeki alanı ayarlayın StructLayoutAttribute.CharSet . Bu öznitelik alanları ayarlanmadığında, hangisinin CharSet kullanılacağını belirlemek dil derleyicisine bağlıdır. C#, Visual Basic ve F# karakter kümesiyle None aynı davranışa Ansi sahip olan karakter kümesi varsayılan olarak kullanılır.

modülüne System.Runtime.InteropServices.DefaultCharSetAttribute C# veya Visual Basic kodunda uygulanırsa, C# veya Visual Basic derleyicisi kullanmak CharSet.Noneyerine varsayılan olarak sağlanan CharSet öğesini yayar. F# öğesini desteklemez DefaultCharSetAttributeve her zaman varsayılan olarak yayar CharSet.None .

Aşağıdaki tabloda her karakter kümesi arasındaki eşleme ve bu karakter kümesiyle birlikte sıralandığında bir karakter veya dizenin nasıl temsil edilir olduğu gösterilmektedir:

CharSet Değer Windows Unix üzerinde .NET Core 2.2 ve öncesi .NET Core 3.0 ve üzeri ve Unix üzerinde Mono
Ansi char (sistem varsayılanı Windows (ANSI) kod sayfası) 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)

Karakter kümenizi seçerken yerel gösteriminizin hangi gösterimi beklediğini bildiğinizden emin olun.