Aracılığıyla paylaş


Karakter kümeleri ve sıralama

Uyarı

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. Kutuda bulunan Roslyn çözümleyicisi (varsayılan olarak etkindir), kodunuzdaki [LibraryImport] özniteliği için gerekli yönergeyi sağlar.

char Değerlerin, string nesnelerin ve System.Text.StringBuilder nesnelerin nasıl düzenlendiği, P/Invoke veya yapıdaki CharSet alanının değerine bağlıdır. P/Invoke'unuzu bildirirken CharSet alanını ayarlayarak DllImportAttribute.CharSet P/Invoke değerini belirleyebilirsiniz. Bir tür için CharSet ayarlamak amacıyla, sınıf veya yapı bildiriminizdeki StructLayoutAttribute.CharSet alanını ayarlayın. Bu öznitelik alanları ayarlanmadığında, hangisinin CharSet kullanılacağını belirlemek dil derleyicisine bağlıdır. C#, Visual Basic ve F#, varsayılan olarak None karakter kümesini kullanır, bu da Ansi karakter kümesiyle aynı davranışa sahiptir.

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

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.