Unicode ve Çok Baytlı Karakter Kümesi (MBCS) Desteği
Japonca ve Çince gibi bazı dillerde büyük karakter kümeleri vardır. Microsoft Foundation Sınıf Kitaplığı (MFC), bu pazarlarda programlamayı desteklemek için büyük karakter kümelerini işlemek için iki farklı yaklaşım sağlar:
Unicode,
wchar_t
tabanlı geniş karakterler ve UTF-16 olarak kodlanmış dizeler.Çok Baytlı Karakter Kümeleri (MBCS),
char
yerel ayara özgü bir karakter kümesinde kodlanmış tek veya çift baytlı karakterler ve dizeler.
Not
Microsoft, tüm yeni geliştirmeler için MFC Unicode kitaplıklarını önerir.
MBCS kitaplıkları Visual Studio 2013 ve Visual Studio 2015'te kullanım dışı bırakıldı. Bu durum artık geçerli değildir.
Visual Studio 2017'den başlayarak, MBCS kitaplıkları artık kullanım dışı değildir ve kullanımdan kaldırma uyarıları oluşturmaz.
Unicode Dizeleri için MFC Desteği
MFC sınıf kitaplığının tamamı, UTF-16 olarak geniş karakterlerde depolanan Unicode karakterler ve dizeler için koşullu olarak etkinleştirilir. Özellikle, sınıfı CString
Unicode etkindir.
Bu kitaplık, hata ayıklayıcısı ve DLL dosyaları MFC'de Unicode'un destekleniyor olması için kullanılır:
MFCsürümüU.LIB
MFCsürümUD. LİB
MFCMsürümüU.LIB
MFCMsürümUD. LİB
MFCSsürümüU.LIB
MFCSsürümUD. LİB
UAFXCW. LİB
UAFXCWD. LİB
MFCsürümüU.PDB
MFCsürümUD. PDB
MFCMsürümüU.PDB
MFCMsürümUD. PDB
MFCSsürümüU.PDB
MFCSsürümUD. PDB
UAFXCW. PDB
UAFXCWD. PDB
MFCsürümU.DLL
MFCsürümUD.DLL
MFCMsürümU.DLL
MFCMsürümUD.DLL
(sürüm , dosyanın sürüm numarasını temsil eder; örneğin, '140' sürüm 14.0 anlamına gelir.)
CString
veri türünü temel alır TCHAR
. Simge _UNICODE
, programınızın bir derlemesi için tanımlanmışsa, TCHAR
16 bit karakter kodlama türü olarak wchar_t
tanımlanır. Aksi takdirde, TCHAR
normal 8 bit karakter kodlaması olarak char
tanımlanır. Bu nedenle, Unicode CString
altında 16 bit karakterden oluşur. Unicode olmadan, türünde char
karakterlerden oluşur.
Uygulamanızın Unicode programlamasını tamamlamak için şunları da yapmalısınız:
_T
Sabit dizeleri Unicode'a taşınabilir olacak şekilde koşullu olarak kodlarken makroyu kullanın.Dizeleri geçirirken, işlev bağımsız değişkenlerinin karakter cinsinden uzunluk mu yoksa bayt cinsinden uzunluk mu gerektirdiğine dikkat edin. Unicode dizeleri kullanıyorsanız fark önemlidir.
C çalışma zamanı dize işleme işlevlerinin taşınabilir sürümlerini kullanın.
Karakterler ve karakter işaretçileri için aşağıdaki veri türlerini kullanın:
kullanmak istediğiniz yeri kullanın
TCHAR
char
.kullanmak istediğiniz yeri kullanın
LPTSTR
char
*.kullanmak istediğiniz yeri kullanın
LPCTSTR
const char
*.CString
veLPCTSTR
arasındaCString
dönüştürmek için işleciniLPCTSTR
sağlar.
CString
ayrıca Unicode kullanan oluşturucular, atama işleçleri ve karşılaştırma işleçleri sağlar.
Çalışma Zamanı Kitaplığı Başvurusu, tüm dize işleme işlevlerinin taşınabilir sürümlerini tanımlar. Daha fazla bilgi için Uluslararasılaştırma kategorisine bakın.
MBCS Dizeleri için MFC Desteği
Sınıf kitaplığı çok baytlı karakter kümeleri için de etkinleştirilir, ancak yalnızca çift baytlık karakter kümeleri (DBCS) için etkinleştirilir.
Çok baytlı bir karakter kümesinde, bir karakter bir veya 2 bayt genişliğinde olabilir. 2 bayt genişliğindeyse, ilk bayt, kullanımda olan kod sayfasına bağlı olarak belirli bir aralıktan seçilen özel bir "kurşun bayt"tır. Birlikte alındığında, müşteri adayı ve "iz baytları" benzersiz bir karakter kodlaması belirtir.
Simge_MBCS
, programınızın bir derlemesi için tanımlanmışsa, temel aldığı ve ile eşlenen CString
char
yazınTCHAR
. Bir içindeki hangi baytların kurşun bayt CString
olduğunu ve hangilerinin iz bayt olduğunu belirlemek size bağlıdır. C çalışma zamanı kitaplığı, bunu belirlemenize yardımcı olacak işlevler sağlar.
DBCS altında, belirli bir dize tüm tek baytlı ANSI karakterlerini, tüm çift baytlı karakterleri veya ikisinin birleşimini içerebilir. Bu olasılıklar dizeleri ayrıştırmada özel bir özen gerektirir. Buna nesneler de dahildir CString
.
Not
MFC'de Unicode dize serileştirmesi, uygulamanın hangi sürümünü çalıştırdığınızdan bağımsız olarak hem Unicode hem de MBCS dizelerini okuyabilir. Veri dosyalarınız programınızın Unicode ve MBCS sürümleri arasında taşınabilir.
CString
üye işlevleri çağırdıkları C çalışma zamanı işlevlerinin özel "genel metin" sürümlerini veya Unicode kullanan işlevleri kullanır. Bu nedenle, örneğin, bir CString
işlev genellikle çağrısı strcmp
yaparsa, bunun yerine ilgili genel metin işlevini _tcscmp
çağırır. Simgelerin _MBCS
ve _UNICODE
tanımlanma şekline bağlı olarak, _tcscmp
aşağıdaki gibi eşlenir:
Simgeler | İşlev |
---|---|
_MBCS Tanımlanan |
_mbscmp |
_UNICODE Tanımlanan |
wcscmp |
Simge tanımlanmadı | strcmp |
Not
ve _UNICODE
simgeleri _MBCS
birbirini dışlar.
Tüm çalışma zamanı dize işleme yordamları için genel metin işlevi eşlemeleri C Çalışma Zamanı Kitaplığı Başvurusu'nda ele alınılmıştır. Liste için bkz . Uluslararasılaştırma.
Benzer şekilde, CString
yöntemler genel veri türü eşlemeleri kullanılarak uygulanır. MFC hem MBCS'yi hem de Unicode'ı etkinleştirmek için*char
char
veya wchar_t
için LPTSTR
veya wchar_t*
için ve LPCTSTR
için const wchar_t*
*const char
kullanır.TCHAR
Bunlar MBCS veya Unicode için doğru eşlemeleri sağlar.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin