Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Unicode, tek bir baytta temsil edilebilenler de dahil olmak üzere tüm karakter kümelerini desteklemeye yönelik bir belirtimdir. Uluslararası bir pazar için programlama kullanıyorsanız Unicode veya çok baytlı karakter kümesi (MBCS) kullanmanızı öneririz. Alternatif olarak, bir anahtarı değiştirerek programınızı derleyebileceğiniz şekilde kodlayabilirsiniz.
Geniş karakter, 2 baytlık çok dilli bir karakter kodudur. Teknik simgeler ve özel yayımlama karakterleri dahil olmak üzere dünya çapında modern bilgi işlemde kullanılan neredeyse tüm karakterleri kapsayan on binlerce karakter, UTF-16 kullanılarak kodlanmış tek bir geniş karakter olarak Unicode belirtimine göre temsil edilebilir. Yalnızca bir geniş karakterde temsil edilemeyen karakterler, Unicode vekil çifti özelliği kullanılarak Unicode çiftinde temsil edilebilir. Ortak kullanımdaki hemen her karakter UTF-16'da tek bir 16 bit genişliğinde temsil edildiğinden, geniş karakterlerin kullanılması uluslararası karakter kümeleriyle programlamayı basitleştirir. UTF-16LE (little-endian için) kullanılarak kodlanmış geniş karakterler, Windows için yerel karakter biçimidir.
Geniş karakterli bir dize bir wchar_t[] dizi olarak temsil edilir ve bir wchar_t* işaretçi tarafından işaret edilir. Herhangi bir ASCII karakteri, karaktere L harfi ön eklenerek geniş bir karakter olarak gösterilebilir. Örneğin, L'\0' geniş (16 bit) NULL karakteridir. Benzer şekilde, herhangi bir ASCII dize değişmez değeri, ASCII değişmez değerine (L"Hello") L harfi ön eklenerek geniş karakterli bir dize değişmez değeri olarak gösterilebilir.
Genel olarak, geniş karakterler bellekte çok baytlı karakterlerden daha fazla yer kaplar, ancak işlenmesi daha hızlıdır. Buna ek olarak, aynı anda çok baytlı kodlamada yalnızca bir yerel ayar temsil edilebilirken, dünyadaki tüm karakter kümeleri Unicode gösterimiyle aynı anda temsil edilir.
MFC çerçevesi unicode özelliklidir ve MFC, aşağıdaki tabloda gösterildiği gibi taşınabilir makroları kullanarak Unicode etkinleştirmeyi gerçekleştirir.
MFC'de Taşınabilir Veri Türleri
| Taşınabilir olmayan veri türü | Bu makroyla değiştirildi |
|---|---|
char, wchar_t |
_TCHAR |
char*, LPSTR (Win32 veri türü), LPWSTR |
LPTSTR |
const char*, LPCSTR (Win32 veri türü), LPCWSTR |
LPCTSTR |
Sınıfı CString temel olarak kullanır _TCHAR ve kolay dönüştürmeler için oluşturucular ve işleçler sağlar. Unicode için dize işlemlerinin çoğu, Temel işlem biriminin 8 bit bayt yerine 16 bit karakter olması dışında, Windows ANSI karakter kümesini işlemek için kullanılan mantık kullanılarak yazılabilir. Çok baytlı karakter kümeleriyle çalışmaktan farklı olarak, bir Unicode karakterini iki ayrı baytmış gibi davranmanız gerekmez (ve olmamalıdır). Ancak, vekil bir geniş karakter çifti ile temsil edilen tek bir karakter olasılığıyla ilgilenmeniz gerekir. Genel olarak, bir dizenin uzunluğunun içerdiği dar veya geniş karakter sayısıyla aynı olduğunu varsayan kod yazmayın.
Ne yapmak istiyorsunuz?
MFC Unicode ve Çok Baytlı Karakter Kümesi (MBCS) Desteği Kullanma
Programıma geniş karakterli bağımsız değişkenler geçirebilmek için wmain kullan
Bayt genişliği taşınabilirliği için genel metin eşlemeleri hakkında bilgi edinin